更改内容时在Excel中打印动态值-空白除外

更改内容时在Excel中打印动态值-空白除外,excel,vba,Excel,Vba,我有一个Excel工作簿,有两张工作表:第一张是表单,第二张是包含多个数据位的列表。使用Branislav Kollár在SO上找到的第二张表格中的数据来更改和打印完整的表格 Sub PrintAll_IDs() For Each myCell In Worksheets(2).Range("A1:A50") 'range with stored ID's Worksheets(1).Range("A1") = myCell.value ' "A1" is the cell with I

我有一个Excel工作簿,有两张工作表:第一张是表单,第二张是包含多个数据位的列表。使用Branislav Kollár在SO上找到的第二张表格中的数据来更改和打印完整的表格

Sub PrintAll_IDs()
For Each myCell In Worksheets(2).Range("A1:A50") 'range with stored ID's
    Worksheets(1).Range("A1") = myCell.value ' "A1" is the cell with ID that you change manually now
    Worksheets(1).PrintOut ' I'm not sure how to print using VBA, just showing the workflow
Next myCell 
End Sub
问题是,要让它工作,您必须手动调整打印范围(在本例中为A1:A50),我希望它是全自动的,比如:读取数据表列中的第一个值,然后继续,直到找不到更多数据

我尝试添加“If”语句以在找到空白单元格时终止进程,并添加“.End(x1Down)”,但似乎没有任何效果


有人知道这样做的方法吗?

有很多方法。这里有一对

option explicit

Sub PrintAll_IDs()
    dim myCell  as range
    with Worksheets(2)
        'range with stored ID's
        For Each myCell In .Range(.cells(1, "A"), .cells(.rows.count, "A").end(xlup))
            ...
        Next myCell 
    end with
End Sub

Sub PrintAll_IDs()
    dim myCell  as range
    with Worksheets(2)
        'range with stored ID's
        For Each myCell In .Range("A:A").specialcells(xlcelltypeconstants, xlnumbers+xlTextValues)
            ...
        Next myCell 
    end with
End Sub

这应该是
xlDown
-字母“l”在“利马”中,而不是数字“1”…我的错,只是我写这个问题时的一个打字错误。实际的l也不起作用。谢谢@jeeped!使用您所说的部分内容,对原始代码进行了一点调整:工作表(“2”).Range(“E2:E999”).SpecialCells(xlCellTypeConstants,xlNumbers+xlTextValues)工作表(“1”).Range(“B2”)=myCell.Value工作表(“1”)。打印下一个myCell End Sub