VB(A)
-
폴더를 순환하며 파일을 루트로 옮기기VB(A) 2024. 4. 17. 20:56
폴더를 선택하면 폴더 안의 하위 폴더도 모두 순환하며 최초 선택한 폴더로 파일을 모두 옮긴 후 폴더는 삭제하는 코드 파일명이 중복될 경우 난수를 생성해준다. 뤼튼 만세 ㅋㅋㅋ Sub MoveFilesInSelectedFolder() Dim sourceFolder As String Dim destFolder As String Dim fso As Object Dim sourceFolderObj As Object Dim destFolderObj As Object Dim subFolder As Object Dim file As Object Dim fileName As String, newFileName As String Dim fileExists As Boolean Dim rndNumber As Integer ..
-
당비휴 근무일지 달력VB(A) 2023. 2. 10. 14:45
3월에 휴가 미리 잡을려고 만든 달력 부산 당비휴 근무기준. 기존 코드에서 이리 붙이고 저리 붙이고 ㅋㅋㅋ Option Explicit Sub Calendar() '연도별 달력 만들기 Dim i As Integer Dim Days As Integer, StartDay As Integer Dim Row As Integer, cnt As Integer Dim InputYear As Integer Dim theDay As Date Dim formSheet As Worksheet Dim v(2) As String Dim SelectedDate As Date, StartDate As Date '매월 1일, 근무설정 기준일 Dim intCycle As Integer Dim cntW As Integer Set for..
-
시트 숨기기 일괄 처리VB(A) 2021. 4. 19. 14:51
시트는 많고 숨길 것도 많고 다시 보이게 할 것도 많은데 엑셀 버전이 낮아서 일괄 처리가 안 될 때 쉽게 처리할 수 있는 추가기능입니다. 엑셀 파일 열어서 '매크로 사용 허용'을 해주시면 리본메뉴에 '추가기능' 탭이 생깁니다. 추가기능 탭에 생성된 '시트 보이기 조정' 아이콘을 눌러보세요 Option Explicit Private Sub UserForm_Initialize() Dim i As Integer Dim j As Integer Dim roundUpSheetscount As Integer Dim chkboxLeft As Integer Dim chkBox As MSForms.checkbox '시트 숫자를 2로 나눔. 체크박스 줄 세우기 위한 용도 roundUpSheetscount = Wo..
-
공휴일 적용된 달력VB(A) 2021. 2. 10. 13:10
1년치 달력이 필요하게 되어서 어쩌다보니 만들게 되었다. DB시트에서 데이터를 불러와 달력에 출력하는 코드까지 완성 양력, 음력, 대체공휴일까지 적용 Option Explicit Sub Calendar() Dim i As Integer Dim Days As Integer, StartDay As Integer Dim Row As Integer, cnt As Integer Dim InputYear As Integer Dim theDay As Date Dim formSheet As Worksheet With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual '기존 워크시트 삭제 .DisplayA..
-
유효성검사 유일값 가져오기VB(A) 2021. 1. 19. 10:28
https://cafe.naver.com/excelmaster/190699의 질문으로 '발주번호'를 이용하여 '로데이터' 시트에 있는 자료를 가져오는 내용입니다. 1. 로데이터 시트의 발주번호 중 중복값은 제거하여 A3 셀에 유효성검사를 이용하여 발주번호를 선택하여 2. 고급필터로 필요한 데이터를 출력합니다. Option Explicit Sub 매크로2()'고급필터 매크로 Dim rawData As Worksheet Dim templateSheet As Worksheet Dim conditionRange As Range Dim printRawData As Range '시트 및 셀 영역 설정 Set rawData = Sheets("로데이터 시트") Set templateSheet = Sheets("템플릿"..
-
미디어 파일을 날짜별로 분류VB(A) 2019. 12. 25. 21:02
사진을 자주 정리하는 것이 아니다보니 날짜별로 폴더 생성하기가 힘들어서 만들어낸 매크로입니다. 기존에 있던 https://dorobo.tistory.com/508 파일은 생성된 일짜가 아니라 마지막 수정날짜를 기준으로 폴더를 만들어서 제가 사용하기엔 안 맞는 부분이 있어서 새로 만들었습니다. 사용법이라고 할 것도 없습니다. 1. 모든 미디어(이미지, 동영상 등) 파일을 한 폴더에 모아줍니다. 2. 파일을 실행하면 '추가기능' 탭이 생기면서 '날짜별 분류' 라는 아이콘이 생깁니다. 3. '날짜별 분류' 아이콘을 클릭하면 폴더를 선택하는 대화창이 뜹니다. 4. 미디어 파일을 모아둔 폴더를 선택하면 나머지는 알아서 합니다. 5. 콘텐츠 생성일자를 먼저 기준으로 삼고, 콘텐츠 생성일자가 없으면 수정일자를 기준으..
-
경품 추첨VB(A) 2019. 6. 26. 10:14
https://cafe.naver.com/excelmaster/165990 에 올라온 질문입니다. 경춤 추첨 프로그램 만드는데요.. 대한민국 모임의 시작, 네이버 카페 cafe.naver.com 사다리나 명단 추첨을 하려는데 버튼을 누르자마자 명단이 짠 하고 나타나니 긴장감이 전혀 없습니다. 추첨은 쪼는 맛이 있어야하는데요. 그래서 슬롯머신 효과를 주어 이름이 나타나게 했습니다. 주로 방송에서 득표수같은 걸 나타낼 때 많이 쓰입니다. Option Explicit Private tmp() As String Private v As Variant Private Sub CommandButton1_Click() Dim cnt1 As Integer, cnt2 As Integer, cnt3 As Integer Dim..
-
여러 개의 텍스트박스를 클릭하여 이름 알아내기VB(A) 2019. 6. 17. 20:54
https://cafe.naver.com/excelmaster/165632 질문입니다. 유저폼에 여러 개의 텍스트박스가 있고 그 중 하나를 클릭하면 해당 텍스트박스의 이름이 출력되는 코드입니다. 텍스트박스가 몇개 없을 땐 텍스트박스마다 클릭 이벤트를 지정하면 되는데 개수가 많을 땐 그럴 순 없지요 클래스모듈의 WithEvents 를 이용하여 간결하게 코드를 만들 수 있습니다. 먼저 클래스모듈 하나를 삽입하여 모듈 이름을 clsTextBox 로 변경한 후 아래 코드를 삽입합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Option Explicit Private WithEvents MyTextBox As MSForms.TextBox Public Property Set..
-
[정규식] 단어 들어 있는 문장찾기VB(A) 2019. 6. 3. 14:25
https://cafe.naver.com/excelmaster/164935 에 올라온 질문입니다. 특정 단어가 포함된 문장을 출력하는 내용입니다. 정규식을 이용해 문장을 추출한 후 문장을 순환하며 단어를 골라내는 흐름입니다. Option ExplicitFunction FindText(MySub As String, MyText As String) As String Dim i As Integer Dim v As Variant '문장 단위로 끊음 v = GetText(MySub) '단어가 포함된 문장 추출 For i = 0 To UBound(v) + 1 If InStr(1, v(i), MyText, vbTextCompare) Then FindText = v(i) Exit Function End If NextE..
-
도형 이름을 활용하여 도형 클릭시 해당 셀로 이동하기VB(A) 2019. 4. 1. 10:50
https://cafe.naver.com/excelmaster/161665 에 올라온 질문의 짧은 답변입니다. 도형을 클릭하면 어떤 셀로 이동을 하고자 하는 질문이며 도형에 셀 주소로 이름을 적용하여 도형을 클릭하면 해당 셀 주소로 이동을 간단하게 할 수 있는 매크로입니다. Sub Macro() '도형 이름을 참조하여 해당 셀로 이동하는 매크로입니다. Range(Mid(Application.Caller, 2)).Select End Sub Colored by Color Scripter cs
-
파일 오픈 여부 판단하기VB(A) 2019. 3. 20. 11:38
엑셀 파일이 열려있는지 판단하는 사용자정의함수입니다.열려있는 파일을 다시 열려고 하면 에러가 나는데이때 에러번호는 70 입니다. 에러번호가 70인지를 판단하여 결과를 내줍니다. Option Explicit Function IsFileOpen(filename As String) As Boolean'파일 오픈 여부를 알려주는 사용자정의함수입니다. Dim errNum As Integer '읽기 전용으로 파일을 엽니다. '파일이 열려있거나 없을 때 파일을 열려고 하면 에러가 나므로 에러처리를 해줍니다. '열려있는 파일을 열려고 할 때의 에러번호는 70입니다 '때문에 에러번호가 70이면 파일이 열려있다고 판단합니다. On Error Resume Next Open filename For Input Lock Read..
-
UTF-8 형식의 텍스트파일 불러오기VB(A) 2019. 3. 19. 09:48
https://cafe.naver.com/excelmaster/161554 에 올라온 질문입니다.UTF-8 형식의 텍스트파일을 불러오는데 인터넷에 있는 코드로는 한글이 깨져서 이를 해결하고자 하는 질문입니다. 저 또한 인터넷으로 검색을 해보니ADODB 개체를 생성하여 UTF-8 텍스틀 불러오는 것이 대부분의 답변이었습니다.텍스트파일은 질문자의 업무와 관련된 것으로 판단되어 첨부에는 넣지 않았습니다. Option Explicit Sub Macro() Dim strFilter As String Dim strFile As String Dim i As Integer Dim v, tmp '기존자료 삭제, 변수설정 및 텍스트파일 불러오기 Range("A1").CurrentRegion.Clear ChDir ThisW..
-
[정규식] 일정한 패턴의 숫자만 가져오기VB(A) 2019. 3. 18. 10:17
https://cafe.naver.com/excelmaster/161500 에 올라온 질문입니다.C열과 같은 데이터가 있을 때 000.000.00 형식의 문자만 가져오는 사용자정의함수입니다. 정규식을 이용하여 패턴을 분석한 뒤 함수를 만들면 쉽게 해결할 수 있습니다. Option Explicit Function MyNum(ByVal tmp As String) As String'정규식을 이용하여 000.000.00 형식의 문자를 출력하는 사용자정의 함수입니다. Dim Myset As Object With CreateObject("vbscript.regexp") '정규식 선언 .Pattern = "\d+\.\d+\.\d+" '000.000.00 의 숫자를 가져옴 .Global = True '패턴과 일치하는 ..
-
공급업체별 제품명 출력하기VB(A) 2019. 3. 17. 22:27
왼쪽에 공급업체와 업체별 제품이름이 하나씩 나열되어있고버튼을 누르면중복된 공급업체명을 하나만 나타내고 업체별 제품명을 출력하는 매크로입니다.Dictionary를 사용해 중복된 공급업체를 없애고 업체별 제품명을 기록합니다. Option Explicit Sub ConcatIf() Dim dict As Object Dim v, i As Long Application.ScreenUpdating = False Set dict = CreateObject("Scripting.Dictionary") 'Dictionary를 선언합니다. v = Range("A1").CurrentRegion.Value '표에 있는 데이터를 배열에 삽입합니다. '공급업체 및 업체별 제품이름을 Dictionary에 넣습니다. '공급업체는 유일..
-
한 셀에서 중복제거후 정렬VB(A) 2019. 3. 17. 09:44
Chronicle님(블로그 바로가기)께 약간 도움을 받은 내용입니다. 하나의 셀에 여러 데이터가 중복으로 있을 때중복항목은 제거하여 오름차순 또는 내림차순으로 정렬하는 사용자정의 함수입니다. ArrayList 개체를 활용하여 정렬을 한번에 하는 것이 이번 코드의 골자입니다. Option Explicit Function UniqueSort(ByVal s As String, Optional sortby As Boolean = False) As String'중복된 데이터를 제거하고 오름차순 또는 내림차순으로 정렬하는 사용자정의 함수입니다.'오름차순 정렬이 기본으로 설정되어 있습니다.'내림차순으로 정렬하고자 하면 =UniqueSort(A1, True) 로 입력을 하면 됩니다. Dim v As Variant Di..
-
특정 글자색 추려내기VB(A) 2019. 3. 16. 15:39
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=243009863&qb=7IOJ7J20IOuTpOyWtOqwhCDquIDsnpDrp4wg7LaU7Lac&enc=utf8§ion=kin&rank=1&search_sort=0&spq=0&pid=U4XS6spVuEVsssKsff8ssssstjw-453943&sid=K8tEGqPdwuz1Q/Dx7KjajQVr 에 올라온 질문입니다. 여러 색깔의 글자가 있고이 중 특정 글자색만 추려내는 내용입니다. Option Explicit '선언하지 않은 변수를 사용 못합니다Option Base 1 '배열을 1부터 시작합니다Sub GetColor() Dim AllColor As Range Dim Sin..
-
같은 글자색의 숫자 더하기VB(A) 2019. 3. 15. 09:05
같은 색깔의 숫자를 더하는 사용자정의함수입니다. =ColorSum(더하고자 하는 글자색, 더하고자 하는 영역) 으로 입력하면 원하는 색깔의 숫자를 더해줍니다. Option Explicit Function ColorSum(SampleRange As Range, SumRange As Range) As Long'SampleRange의 글자색과 일치하는 숫자를 더하는 사용자정의함수입니다. Dim SampleColor As Long '글자색 번호 Dim tmp As Long '글자색이 같은 숫자의 임시 합 Dim SingleRange As Range '순환문에 쓸 변수 '더하고자 하는 글자색 SampleColor = SampleRange.Font.Color For Each SingleRange In SumRang..
-
시트명을 입력하면 해당 시트로 이동VB(A) 2019. 3. 12. 13:26
A1셀에 시트명을 입력하면 해당 시트로 이동하는 매크로입니다.시트명이 아주 많을 때 마우스로 일일이 찾아가길 힘들 때 사용하면 좋은 코드입니다.실무에서 많이 요구되는 내용이기도 합니다. Option Explicit Private Sub Worksheet_Change(ByVal Target As Range)'워크시트의 셀 내용이 바뀌면 이벤트를 실행합니다. With Target 'A1셀에 아니면 매크로를 종료합니다. If Intersect(.Cells, Range("A1")) Is Nothing Then Exit Sub '다중 셀을 선택할 경우 매크로를 종료합니다. If .CountLarge > 1 Then Exit Sub End With With Application .EnableEvents = Fals..
-
[정규식] 문자 숫자 섞여있는 셀에서 숫자만 더하기VB(A) 2019. 2. 26. 23:57
https://cafe.naver.com/excelmaster/160561에 올라온 질문입니다.특수문자, 영문자, 숫자 등이 한 곳에 섞인 셀에서숫자만 더하는 문제입니다. 정규식으로 풀 수 있는 단골로 나오는 문의사항입니다.셀에서 숫자만 파악한 뒤하나씩 더해주면 됩니다. 정규식에서 숫자를 골라내는 패턴이 \d 라는 것만 알면 해결할 수 있습니다. Option Explicit Function NumSum(tmp As String) As Long Dim Match As Object Dim i As Integer Dim matSum As Integer With CreateObject("VBscript.regexp") '정규식 생성 .Global = True '모든 숫자 파악 .Pattern = "\d+" '숫..
-
[& Chronicle] 지정기간의 합 구하기VB(A)/당근쨈 & Chronicle 2019. 2. 22. 18:56
https://cafe.naver.com/excelmaster/160457에 올라온 질문입니다. 워크시트 함수인 EoMonth 함수를 사용하여3개월 전의 첫날, 1개월 전의 마지막날을 구하여 그 사이에 있는 기간의 출고수량을 구하면 됩니다. Chronicle님은 아래와 같이 풀었습니다.https://blog.naver.com/asaph16/221472345497풀이 과정은 같지만 이런 건 함수가 훨씬 간단하네요. Option Base 1Option Explicit Sub Macro() Dim vAll, vDate Dim i As Integer Dim LastInput As Date Dim StartDay As Date Dim LastDay As Date Dim SumOutput As Long Dim wk..