해결 엑셀2021윈도우11
다시 요청드립니다 SOS 표 자동 확장 VBA
<Before>
<after>
엑셀 파일 첨부가 안돼서 불가피하게 이미지로 질문드립니다 ㅜㅜ
GPT로 VBA 짜도 계속 아무런 변화가 없는데 혹시 해결방법 있을까요,, 벌써 오늘 6시간 넘게 붙들고 있습니다 ㅜㅜ
<after>
엑셀 파일 첨부가 안돼서 불가피하게 이미지로 질문드립니다 ㅜㅜ
- 간단히 요약하자면 before 시트 B열 사용일자에 날짜를 입력하면 after 시트처럼 증빙자료를 복사해서 표가 자동으로 확장되게 만들고 싶습니다.
- 예를 들어 B18셀에 2024.11.30을 입력하면 아무 변화가 없지만, B19셀에 2025.05.05를 입력하면 증빙자료 2가지(세금계산서, 계좌이체증명)를 그대로 복사해 after 시트처럼 표시되게 만들고 싶습니다.
GPT로 VBA 짜도 계속 아무런 변화가 없는데 혹시 해결방법 있을까요,, 벌써 오늘 6시간 넘게 붙들고 있습니다 ㅜㅜ
민
l
댓글 2
이렇게 한번 활용해 보세요^^
첨부파일을 실행하면 리본메뉴는 자동으로 생성되니 클릭하시고 사용하시면 됩니다.
Option Explicit Sub loadCustomTabOfRibbon(ribbon As IRibbonUI) '//엑셀이 시작되면 사용자정의 탭을 활성화시킨다. On Error Resume Next ribbon.ActivateTab "myTabId001" End Sub Public Sub FrmOpen(control As IRibbonControl) frm증빙입력.Show End Sub Public Function MkDict(Optional ByVal ws As Worksheet) As Object '// 세목(A) → 금액이상여부(D) (중복 제거) Dim d As Object: Set d = CreateObject("Scripting.Dictionary") Dim sd As Object Dim r As Long, er As Long Dim k As String, a As String, c As String If ws Is Nothing Then Set ws = ActiveSheet er = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row k = "" For r = 2 To er a = Trim$(CStr(ws.Cells(r, "A").Value)) c = Trim$(CStr(ws.Cells(r, "D").Value)) If Len(a) > 0 Then k = a If Not d.Exists(k) Then Set sd = CreateObject("Scripting.Dictionary") d.Add k, sd End If End If If Len(c) > 0 And Len(k) > 0 Then Set sd = d(k) If Not sd.Exists(c) Then sd.Add c, vbNullString End If Next r Set MkDict = d End Function Public Sub InsBlk(ByVal ws As Worksheet, _ ByVal cel As Range, _ ByVal dt As Date, _ ByVal sd As Object) '// cel 바로 아래에 날짜 1번, 항목수만큼 행 삽입, D열에 항목 채움 Dim cm As XlCalculation cm = Application.Calculation Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual On Error GoTo EH Dim r0 As Long: r0 = cel.Row Dim n As Long: n = sd.Count Dim ri As Long: ri = r0 + 1 ws.Rows(ri & ":" & ri + n - 1).Insert Shift:=xlShiftDown ws.Cells(ri, "B").Value = Format(dt, "yyyy.mm.dd") Dim i As Long, k As Variant, r As Long: r = ri For Each k In sd.Keys ws.Cells(r, "D").Value = CStr(k) r = r + 1 Next k With ws.Range(ws.Cells(ri, "B"), ws.Cells(ri + n - 1, "D")) .Font.Size = 10 .Borders.LineStyle = xlContinuous .Borders.Weight = xlThin End With Tidy: Application.ScreenUpdating = True Application.EnableEvents = True Application.Calculation = cm Exit Sub EH: Debug.Print "[에러]"; Err.Number, Err.Description Resume Tidy End Sub