Saya memiliki kode di bawah ini untuk Mencetak Beberapa Lembar dengan menggunakan kode array. Cara Melewati Cetak Lembar Spesifik pada grup ini, JIKA Nilai Sel (D4) kosong di salah satu lembar ini.

Sub Print_Some_Sheet()

Worksheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")).PrintOut , collate:=True

End Sub
-1
Waleed78 8 April 2021, 22:33

1 menjawab

Jawaban Terbaik

Anda memerlukan loop untuk itu, baik untuk mencetak (atau tidak mencetak) setiap lembar satu per satu atau untuk menyaring larik untuk mengecualikan lembar di mana D4 kosong.

Berikut beberapa kode yang memiliki kedua opsi, hapus yang tidak ingin Anda gunakan.

Sub Print_Some_Sheet()
Dim sh As Worksheet
Dim strName As Worksheet
Dim arrSheets As Variant
Dim arrSheetsToPrint As Variant
Dim cnt As Long
Dim idx As Long

    arrSheets = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")

    ReDim arrSheetsToPrint(LBound(arrSheets) To UBound(arrSheets))
    
    ' option 1
    For idx = LBound(arrSheets) To UBound(arrSheets)
        Set sh = Sheets(arrSheets(idx))
        If sh.Range("D4").Value <> "" Then
            sh.PrintOut , collate:=True
        End If
    Next idx
    
    ' option 2
    For idx = LBound(arrSheets) To UBound(arrSheets)
        Set sh = Sheets(arrSheets(idx))
        If sh.Range("D4").Value <> "" Then
            arrSheetsToPrint(cnt) = arrSheets(idx)
            cnt = cnt + 1
        End If
    Next idx
    
    If cnt > 0 Then
        ReDim Preserve arrSheetsToPrint(cnt - 1)
        Worksheets(arrSheetsToPrint).PrintOut , collate:=True
    End If
    
End Sub
0
norie 8 April 2021, 20:06