본문 바로가기

VBA/엑사남_기초방86

[기초방] VBA 100제 #28 [ 그룹 통합하기 ] 이번 문제는 시트를 추가한 후 그 이름을 통합으로 변경하는 문제가 그 첫 번째이고 통합시트에 각각의 시트의 데이터들을 모두 복사 이동하는 구문이다. 이 구문을 해결하기 위해서는 데이터가 어디에 있는지 확인하는 것이 가장 급선무이다. 각 시트의 데이터가 특정 영역에서 시작하고 끊김 없이 끝까지 데이터가 입력된 상태인 규칙적인 형태이다. 물론 특정영역부터 데이터가 입력된 영역까지로 하여 데이터를 복사해서 붙여 넣기 해도 되지만 여기서는 Usedrange가 더 바람직한 사용법이라 본다. For Each Sh In ThisWorkbook.Sheets If Sh.Name "통합" And Sh.Name "문제" Then Sh.UsedRange.Offset(1).Copy Sheets("통합").Cells(Rows.C.. 2023. 2. 5.
[기초방] VBA 100제 #27 [ 미납자 확인 ] 표에서 X로 표시된 곳은 각각의 사람들이 해당월에 미납금액이 있음을 뜻한다. 미납된 날을 조합하고 그 미납된 금액을 표기하는데 3만원 이상은 노란색 음영까지 표시 하는 구문이다. 최근에는 초기 서식을 입히거나 후기 서식을 입히기 위해서 사용하였던 사용자 함수를 미납금액이 있을 때만 호출하여 이슈를 처리하여 보았다. For Each rngA In rngAll.Rows M = Application.CountIf(rngA, "X") If M > 0 Then Cells(rngA.Row, "g") = haja_month(rngA) Cells(rngA.Row, "h") = M & "만원 미납" If M >= 3 Then Cells(rngA.Row, 1).Resize(1, 8).Interior.ColorIndex =.. 2023. 2. 5.
[기초방] VBA 100제 #26_1 [ 그룹별 목차 만들기 ] 26번 문제에서 생성한 각 그룹에 하이퍼링크를 이용한 목차 만들기 26번 문제에 아래와 같이 코드가 추가되었다. Function haja_Hyperlinks() Dim rngAll As Range: Set rngAll = Range([f6], [f6].End(4)) Dim rngA As Range For Each rngA In rngAll ActiveSheet.Hyperlinks.Add anchor:=rngA, Address:="", SubAddress:=rngA.Value & "!A1", ScreenTip:="[해당 시트로 이동]" rngA.Font.Underline = xlUnderlineStyleNone rngA.Font.Color = rgbDarkBlue rngA.Font.Bold = True r.. 2023. 2. 5.
[기초방] VBA 100제 #26 [ 그룹별 시트 만들기 ] 정렬되지 않은 이름들을 순환하면서 각 그룹을 만드는 구문이다. 하나의 시트로만 작업을 해왔던 분들이면 다중 시트를 생성하면서 작업하는 것이 낯설 수도 있다. 실무에서도 많이 사용되는 구문이기에 하나씩 잘 정리하길 바란다. Sheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = rngX 참 고급스킬이다. 시트를 추가하는 데 그 위치는 현재 생성된 시트들의 맨 뒤에 시트를 추가하고, 그 이름을 특정 변수 값으로 하는 내용이다. 반드시 숙지하길 바란다. Cells(Rows.Count, "b").End(3)(2).Resize(1, 2) = Array(rngA, rngA.Next) 여기서 Array를 주목해보자. Array 안 썼다면 아래와 같이 각각을 분리하여 작.. 2023. 2. 3.