1

我是 VBA 新手,并试图在 Excel 中实现这一点:

我有一张 sheet1 ,其中有带有值的行。我创建了一个按钮,它执行并将第一行数据复制到另一个工作表(Sheet2),复制到一些预定义的单元格中(即单元格 A1 中的值进入例如 B3)。然后我要把它保存成pdf。

现在我希望我的代码更加动态,并对 Sheet1 中的每一行执行此操作。因此,首先将 A1-D1 中的所有值复制到工作表 2,创建 pdf,然后将下一行 (A2-D2) 复制到工作表 2,创建 pdf 等等。

我怎样才能做到这一点?

我的代码适用于一行:

Private Sub CommandButton1_Click()

 'Get name
   Worksheets("Sheet2").Range("B5").Value = Worksheets("Sheet1").Range("V2").Value &     " " & Worksheets("Sheet1").Range("W2").Value

 'Get adress
 Worksheets("Sheet2").Range("B6").Value = Worksheets("Sheet1").Range("AB2").Value

 'Create pdf for this row
 RDB_Worksheet_Or_Worksheets_To_PDF ()


End Sub 
4

2 回答 2

2

解决了!

有效的最终代码(对我来说):

Dim pointer As Integer
pointer = 2

Do While Not IsEmpty(Worksheets("Sheet1").Range("V" & pointer))

Private Sub CommandButton1_Click()

 'Get name
   Worksheets("Sheet2").Range("B" & pointer).Value = Worksheets("Sheet1").Range("V" & pointer).Value &     " " & Worksheets("Sheet1").Range("W"& pointer).Value

 'Get adress
 Worksheets("Sheet2").Range("B" & pointer).Value = Worksheets("Sheet1").Range("AB" & pointer).Value

 'Create pdf for this row
 RDB_Worksheet_Or_Worksheets_To_PDF ()

pointer = pointer + 1
Loop


End Sub 
于 2013-10-29T12:33:58.687 回答
2

您需要一个循环来遍历 V 列中的所有单元格。

Private Sub CommandButton1_Click()

    Dim ws1 As Worksheet
    Set ws1 = Sheets(1)

    Dim ws2 As Worksheet
    Set ws2 = Sheets(2)

    Dim cell As Range
    For Each cell In ws1.Range("V2:V" & ws1.Range("V" & Rows.Count).End(xlUp).Row)

        ws2.Range("B5") = cell & Chr(32) & cell.Offset(0, 1)
        ws2.Range("B6") = cell.Offset(0, 6)

        'RDB_Worksheet_Or_Worksheets_To_PDF ()

    Next

End Sub
于 2013-10-29T12:06:35.033 回答