想把 S.No (A1,A2,A3,A4.......) 从 sheet "filter_data" 一张一张复制到 sheet "cheque print" ,使用 VBA 进入单元格 (Y22)

Want to copy S.No (A1,A2,A3,A4.......) one by one from sheet "filter_data" to sheet "cheque print" , into Cell (Y22) using VBA

我在同一个工作簿上有两个 Excel sheet,名称分别为 Filter dataCheque Print,在 Filter Data 中,我有 Cheque Serial Number 在 A2、A3、A4、A5 ……列和 Cheque Print 中,使用 VLOOKUP.

检查打印格式

我想把Check S.No (A2, A3, A4, A5......) to sheet Cheque Print 一张一张复制到Cell Y22 using VBA。将A2单元格数据复制到Y22并打印支票,再将A3单元格数据复制到Y22并打印支票,最后找到空单元格。

如果我没理解错的话,你有一个包含两个(也许更多)作品的工作簿sheet。一个名为“过滤数据”,一个名为“支票打印”。过滤器数据 sheet 包含需要打印哪些支票的数据,支票打印 sheet 已格式化,以便在打印时打印支票。通过将过滤器数据 sheet 上 A 列的支票序列号放入支票打印的单元格 Y22 中,支票打印 sheet 将使用 VLOOKUP 引入所有必要的数据来打印一张支票。

您想遍历筛选数据的 A 列中的值,将序列号一一放入支票打印的 Y22 中并打印支票。

因为您的 sheet 和用于检查的数据被称为“过滤数据”,我假设您使用过滤器来隐藏您不想打印的行。

下面的代码将在sheet“过滤数据”的可见行上获取A列中的每个值,并将其放入“支票打印”的Y22中,在移动到之前打印支票打印上的所有数据下一个序列号。

Sub print_cheques()
        
    Dim row As Long
    Dim filter_data As Worksheet
    Dim cheque_print As Worksheet
    
    Set filter_data = ThisWorkbook.Worksheets("Filter Data")
    Set cheque_print = ThisWorkbook.Worksheets("Cheque Print")
    
    For row = 2 To filter_data.Cells(filter_data.Rows.Count, 1).End(xlUp).row
        If Not filter_data.Rows(row).Hidden And filter_data.Cells(row, 1).Value > "" Then ' only print the check if the row is visible and there is a serial number
            Debug.Print "Now printing cheque # " & filter_data.Cells(row, 1).Value ' display progress in the immeidate window.
            cheque_print.Range("y22").Value = filter_data.Cells(row, 1).Value ' put the serial number on cheque print sheet
            cheque_print.UsedRange.PrintOut ' print the cheque
        End If
        'row = row + 1
        DoEvents ' makes it possible to stop code by pressing ctrl+break
    Next

End Sub