我是VBA的新手,并尝试在Excel中实现这一点:
我有一个sheet1,其中有行值。我创建了一个按钮,它执行并将第一行数据复制到另一个工作表(Sheet2),进入一些预定义的单元格(即单元格A1中的值进入例如B3)。然后我要将其保存为pdf。
现在我希望我的代码更加动态,并为Sheet1中的每一行执行此操作。因此,首先将A1-D1中的所有值复制到sheet2,创建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
解决了!
适用的最终代码(对我而言):
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
您需要一个循环来遍历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