VBA宏,用于将单元格列表一次复制到另一个工作表中,以进行API处理
我对构建宏还不熟悉,但我认为我正在尝试做的是可能的,并且会让生活变得更加轻松。我正在尝试创建一个宏,该宏将工作表a列中100个单元格的列表一次复制一个到工作表详细信息中进行处理,然后将工作表详细信息(API运行后)的输出复制回工作表A3旁边的工作表1。然后我希望它移动到A4,并遵循相同的过程 我正在尝试构建一个宏,它将从工作表1复制单元格A3(a列中每个单元格下面有100个单元格),然后将其粘贴到工作表1中的$a$1中。在API运行之后,我希望它将$C$21、$C$22、$D$25(等另外5个固定的输出单元格)复制回表1中A3旁边的第1行,这样它就是B3、D3、E3。等等 然后我想让它从第一张纸移到A4单元格,然后将它粘贴到第二张纸中的$A$1中,让API运行,将$C$21、$C$22、$D$25复制回第一张纸中A4旁边的第1行,这样它就是B4、D4、E4。等等 我甚至不知道在这里使用哪个术语 到目前为止,我得到的是:VBA宏,用于将单元格列表一次复制到另一个工作表中,以进行API处理,vba,excel,macros,Vba,Excel,Macros,我对构建宏还不熟悉,但我认为我正在尝试做的是可能的,并且会让生活变得更加轻松。我正在尝试创建一个宏,该宏将工作表a列中100个单元格的列表一次复制一个到工作表详细信息中进行处理,然后将工作表详细信息(API运行后)的输出复制回工作表A3旁边的工作表1。然后我希望它移动到A4,并遵循相同的过程 我正在尝试构建一个宏,它将从工作表1复制单元格A3(a列中每个单元格下面有100个单元格),然后将其粘贴到工作表1中的$a$1中。在API运行之后,我希望它将$C$21、$C$22、$D$25(等另外5个固
Sub a()
With Sheets("Sheet1")
For I = 3 To .Range("A" & Rows.Count).End(xlUp).Row
.Range("A" & I).Copy Sheets("Detailed").Range("A1")
Call Wait_Fo_API()
Sheets("Detailed").Calculate
.Range("B" & I).Value = Sheets("Detailed").Range("C21").Value
.Range("D" & I).Value = Sheets("Detailed").Range("C22").Value
.Range("E" & I).Value = Sheets("Detailed").Range("D25").Value
' add rest of output cells
Next I
End With
End Sub
Sub Wait_Fo_API()
Application.OnTime Now() + TimeValue("00:02:00")
非常感谢您的帮助 明白了
Dim i As Integer
Dim ws1 As Worksheet, ws2 As Worksheet
Sub Start()
Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Detailed")
i = 2
woopi2
End Sub
Sub woopi2()
ws1.Range("A" & i).Copy
ws2.Range("A1").PasteSpecial Paste:=xlPasteValues
If ws1.Range("A" & i) = vbNullString Then
Exit Sub
Else
Wait_For_Copy
End If
End Sub
Sub Wait_For_Copy()
Application.OnTime Now() + TimeValue("00:02:00"), "Copy_Values"
End Sub
Sub Copy_Values()
ws2.Range("C25").Copy
ws1.Range("B" & i).PasteSpecial Paste:=xlPasteValues
ws2.Range("C23").Copy
ws1.Range("D" & i).PasteSpecial Paste:=xlPasteValues
i = i + 1
woopi2
End Sub
明白了
Dim i As Integer
Dim ws1 As Worksheet, ws2 As Worksheet
Sub Start()
Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Detailed")
i = 2
woopi2
End Sub
Sub woopi2()
ws1.Range("A" & i).Copy
ws2.Range("A1").PasteSpecial Paste:=xlPasteValues
If ws1.Range("A" & i) = vbNullString Then
Exit Sub
Else
Wait_For_Copy
End If
End Sub
Sub Wait_For_Copy()
Application.OnTime Now() + TimeValue("00:02:00"), "Copy_Values"
End Sub
Sub Copy_Values()
ws2.Range("C25").Copy
ws1.Range("B" & i).PasteSpecial Paste:=xlPasteValues
ws2.Range("C23").Copy
ws1.Range("D" & i).PasteSpecial Paste:=xlPasteValues
i = i + 1
woopi2
End Sub