'5 명의 해당 확인란을 기준으로 워크 시트의 인쇄 영역에 5 개의 인쇄 가능 영역을 추가하는 코드를 작성했습니다. 클릭 상자는 인쇄 영역 추가 기능을 나타내며 훨씬 간단하게 다른 명령 행을 사용하면 지울 수 있습니다. 다음은 훌륭하게 작동합니다. 따라서 공유하고 싶었습니다. 다른 사람이나 간결한 방법을 사용하는 경우 궁금해 할 것입니다. 그는 VBA에서 거의 프로그램하지 않으므로 무언가를 통해 자신의 길을 강요해야했습니다. 어쨌든 여기에 있습니다 :확인란을 사용하여 인접하지 않은 인쇄 영역을 설정하십시오.
Private Sub Message_Click()
Dim Ranges() As Range
Dim rangeCount As Integer
rangeCount = 0
If ActiveSheet.OLEObjects("PrintArea1").Object.Value Then
rangeCount = rangeCount + 1
ReDim Preserve Ranges(rangeCount)
Set Ranges(rangeCount) = Range("Sect1PULC", Range("Sect1PLLC").Offset(0, 1))
End If
If ActiveSheet.OLEObjects("PrintArea2").Object.Value Then
rangeCount = rangeCount + 1
ReDim Preserve Ranges(rangeCount)
Set Ranges(rangeCount) = Range(Range("Sect2PULC"), Range("Sect2PLLC").Offset(0, 1))
End If
If ActiveSheet.OLEObjects("PrintArea3").Object.Value Then
rangeCount = rangeCount + 1
ReDim Preserve Ranges(rangeCount)
Set Ranges(rangeCount) = Range(Range("Sect3PULC"), Range("Sect3PLLC").Offset(0, 1))
End If
If ActiveSheet.OLEObjects("PrintArea4").Object.Value Then
rangeCount = rangeCount + 1
ReDim Preserve Ranges(rangeCount)
Set Ranges(rangeCount) = Range(Range("Sect4PULC"), Range("Sect4PLLC").Offset(0, 1))
End If
If ActiveSheet.OLEObjects("PrintArea5").Object.Value Then
rangeCount = rangeCount + 1
ReDim Preserve Ranges(rangeCount)
Set Ranges(rangeCount) = Range(Range("Sect5aPULC"), Range("Sect5aPLLC").Offset(0, 1))
rangeCount = rangeCount + 1
ReDim Preserve Ranges(rangeCount)
Set Ranges(rangeCount) = Range(Range("Sect5bPULC"), Range("Sect5bPLLC").Offset(0, 1))
End If
Dim PrintSection As Range
If rangeCount = 0 Then Exit Sub
If rangeCount = 1 Then Set PrintSection = Ranges(1)
If rangeCount = 2 Then Set PrintSection = Application.Union(Ranges(1), Ranges(2))
If rangeCount = 3 Then Set PrintSection = Application.Union(Ranges(1), Ranges(2), Ranges(3))
If rangeCount = 4 Then Set PrintSection = Application.Union(Ranges(1), Ranges(2), Ranges(3), Ranges(4))
If rangeCount = 5 Then Set PrintSection = Application.Union(Ranges(1), Ranges(2), Ranges(3), Ranges(4), Ranges(5))
If rangeCount = 6 Then Set PrintSection = Application.Union(Ranges(1), Ranges(2), Ranges(3), Ranges(4), Ranges(5), Ranges(6))
With ActiveSheet.PageSetup
.PrintArea = PrintSection.Address
.Orientation = xlPortrait
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
.CenterHorizontally = True
End With
End Sub
실수로 편집하는 것에 대해 사과드립니다. 복구하다. –