Excel VBA问题-复制索引范围的语法
嗨–我正在尝试将特定条件下的多张表中的数据编译成一张表。 我希望这一步通过工作表从5号到x号,并执行以下操作 -查找源工作表范围E13:E37中的值为空的行,并将(行源,2)到(行源,5)中的值复制并粘贴到(行目标,2)到(行目标,5)中的目标工作表 -将源工作表单元格“C2”中的值复制并传递到每行目标 我的代码有两个问题: 1.我在复制粘贴范围时出错。我已经尝试了很多不同的语法,但都不正确。 2.它实际上并不是一步一步地穿过所有的床单 有人能帮我吗?多谢各位Excel VBA问题-复制索引范围的语法,excel,vba,Excel,Vba,嗨–我正在尝试将特定条件下的多张表中的数据编译成一张表。 我希望这一步通过工作表从5号到x号,并执行以下操作 -查找源工作表范围E13:E37中的值为空的行,并将(行源,2)到(行源,5)中的值复制并粘贴到(行目标,2)到(行目标,5)中的目标工作表 -将源工作表单元格“C2”中的值复制并传递到每行目标 我的代码有两个问题: 1.我在复制粘贴范围时出错。我已经尝试了很多不同的语法,但都不正确。 2.它实际上并不是一步一步地穿过所有的床单 有人能帮我吗?多谢各位 Sub Get_Activitie
Sub Get_Activities()
Dim c As Range 'count for blank
Dim j As Integer 'target sheet row
Dim w As Integer ' sheet number
Dim Source As Worksheet
Dim Target As Worksheet
Dim SheetCount As Integer
Set Target = ActiveWorkbook.Worksheets("Report") 'where the data is going
j = 4 ' Start copying to row 4 in target sheet
w = 5 'start at 5th Worksheet in file which should be the first Plant
If w <= ActiveWorkbook.Sheets.Count Then
Set Source = ActiveWorkbook.Worksheets(w) 'where the data is coming from
For Each c In Source.Range("E13:E37") ' Look at all the tasks
If c = "" Then
Source.Cells(2, 3).Copy Target.Cells(j, 1)
Source.Range(Cells(c.Row, 2), Cells(c.Row, 5)).Copy
Target.Range(Cells(j, 2)).PasteSpecial Paste:=xlPasteValues ' Getting an invalid operator error for j.Row
j = j + 1
End If
Next c
w = w + 1
End If
End Sub
Sub Get_活动()
尺寸c作为空白范围的“计数”
尺寸j为整数的“目标图纸行”
尺寸w为整数“页码
将源设置为工作表
将目标变暗为工作表
Dim SHEETCUNT为整数
将Target=ActiveWorkbook.Worksheets(“报告”)设置为数据的去向
j=4'开始复制到目标工作表中的第4行
w=5'从文件中的第5个工作表开始,该工作表应为第一个工厂
如果问题1是由于不正确或至少是容易出现问题的语法造成的:
您应该在两个“单元格”前面添加“源”标识符
Source.Range(Cells(c.Row, 2), Cells(c.Row, 5)).Copy
您还应该去掉粘贴代码的“范围”,因为它是不必要的,并且可能会导致问题。这两个更改都已在下面的代码块中完成
Target.Range(Cells(j, 2)).PasteSpecial Paste:=xlPasteValues
关于使用范围和单元格时是否需要额外标识符,可以在此处找到比我所能提供的更好的描述-
第二个问题是,你永远不会在工作表中循环,代码在if之后结束,我选择了“Do While”循环。在这种情况下,你可以选择任何你喜欢的循环形式,只要你循环
Do While w <= ActiveWorkbook.Sheets.Count
Set Source = ActiveWorkbook.Worksheets(w) 'where the data is coming from
For Each c In Source.Range("E13:E37") ' Look at all the tasks
If c = "" Then
Source.Cells(2, 3).Copy Target.Cells(j, 1)
Source.Range(Source.Cells(c.Row, 2), Source.Cells(c.Row, 5)).Copy
Target.Cells(j, 2).PasteSpecial Paste:=xlPasteValues ' Getting an invalid operator error for j.Row
j = j + 1
End If
Next c
w = w + 1
Loop
Do While w问题1是由于语法不正确或至少容易出现问题:
您应该在两个“单元格”前面添加“源”标识符
Source.Range(Cells(c.Row, 2), Cells(c.Row, 5)).Copy
您还应该去掉粘贴代码的“范围”,因为它是不必要的,并且可能会导致问题。这两个更改都已在下面的代码块中完成
Target.Range(Cells(j, 2)).PasteSpecial Paste:=xlPasteValues
关于使用范围和单元格时是否需要额外标识符,可以在此处找到比我所能提供的更好的描述-
第二个问题是,你永远不会在工作表中循环,代码在if之后结束,我选择了“Do While”循环。在这种情况下,你可以选择任何你喜欢的循环形式,只要你循环
Do While w <= ActiveWorkbook.Sheets.Count
Set Source = ActiveWorkbook.Worksheets(w) 'where the data is coming from
For Each c In Source.Range("E13:E37") ' Look at all the tasks
If c = "" Then
Source.Cells(2, 3).Copy Target.Cells(j, 1)
Source.Range(Source.Cells(c.Row, 2), Source.Cells(c.Row, 5)).Copy
Target.Cells(j, 2).PasteSpecial Paste:=xlPasteValues ' Getting an invalid operator error for j.Row
j = j + 1
End If
Next c
w = w + 1
Loop
Do While w