Excel 从范围宏复制单个单元格
我在表1上有数量不同的数据。我需要一个宏来循环所有范围,如果单元格有值,那么将其复制到Sheet2上的特定列。我不能简单地复制整个范围,因为我不想进入。我需要逐个循环遍历每个单元格,并将值以特定格式粘贴到Sheet2上 我有下面的代码,它给了我 错误“1004”方法“对象范围”“工作表”失败Excel 从范围宏复制单个单元格,excel,vba,Excel,Vba,我在表1上有数量不同的数据。我需要一个宏来循环所有范围,如果单元格有值,那么将其复制到Sheet2上的特定列。我不能简单地复制整个范围,因为我不想进入。我需要逐个循环遍历每个单元格,并将值以特定格式粘贴到Sheet2上 我有下面的代码,它给了我 错误“1004”方法“对象范围”“工作表”失败 完全忘记rng对象。对于每个语句,在中更为必要,但您只是在工作表中的行之间循环 为i创建一个简单的For语句,该语句只循环您需要的行: Dim ws1 As Worksheet, ws2 As Worksh
完全忘记
rng
对象。对于每个语句,在中更为必要,但您只是在工作表中的行之间循环
为i创建一个简单的For
语句,该语句只循环您需要的行:
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = ThisWorkbook.Worksheets("Sheet1")
Set ws2 = ThisWorkbook.Worksheets("Sheet2")
Dim i As Long
For i = 4 To 17
If Not IsEmpty(ws1.Cells(i, 2)) Then
ws1.Cells(i, 4).Copy ws2.Range("A1")
End If
Next i
正如我已经指出的,您的拷贝目的地ws2.Range(“A1”)
是静态的,因此每次满足您的条件时,它都会继续覆盖您的数据。但是你似乎已经处理好了,所以我不会假设你想用它做什么。完全忘记rng
对象。对于每个
语句,在中更为必要,但您只是在工作表中的行之间循环
为i创建一个简单的For
语句,该语句只循环您需要的行:
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = ThisWorkbook.Worksheets("Sheet1")
Set ws2 = ThisWorkbook.Worksheets("Sheet2")
Dim i As Long
For i = 4 To 17
If Not IsEmpty(ws1.Cells(i, 2)) Then
ws1.Cells(i, 4).Copy ws2.Range("A1")
End If
Next i
正如我已经指出的,您的拷贝目的地ws2.Range(“A1”)
是静态的,因此每次满足您的条件时,它都会继续覆盖您的数据。但是您似乎已经处理了这个问题,所以我不会假设您正在尝试如何处理它。您的rng
变量正在引用活动工作表,因为您在设置范围时没有限定对象。@braX我尝试将我的设置更新为:set rng=Worksheets(“Sheet1”).Range(“B4:D17”)还是相同的错误ws1.Range(rng.Cells(i,3))发生了什么事rng.Cells()
已经返回了一个range对象,那么为什么要将它放入另一个函数中,而这个函数基本上执行相同的操作呢?@K.Dᴀᴠɪs我需要宏在一个范围内循环。然后当它遇到一个有值的单元格时。我需要它将下一列中的值复制到另一个工作表上的下一个空单元格。我想我需要放弃这个范围。@K.Dᴀᴠɪs我最初使用ws1/ws2,但在进行故障排除时,我使用了完整的工作表名称。您的rng
变量正在引用活动工作表,因为您在设置Range
对象时没有限定它。@braX我尝试将我的集合更新为:set rng=Worksheets(“Sheet1”).Range(“B4:D17”)还是相同的错误ws1.Range(rng.Cells(i,3))发生了什么事rng.Cells()
已经返回了一个range对象,那么为什么要将它放入另一个函数中,而这个函数基本上执行相同的操作呢?@K.Dᴀᴠɪs我需要宏在一个范围内循环。然后当它遇到一个有值的单元格时。我需要它将下一列中的值复制到另一个工作表上的下一个空单元格。我想我需要放弃这个范围。@K.Dᴀᴠɪs我最初使用ws1/ws2,但在进行故障排除时,我使用了完整的工作表名称。请注意我对ws1.Cells(I,1)
和ws1.Cells.(I,4)
-您将代码中的1,3作为相对于rng
对象的第一列的编辑,我已经将我的答案更正为您需要的实际列数。请注意我对ws1.Cells(I,1)
和ws1.Cells.(I,4)
-您在代码中以1,3作为相对于rng
对象的第一列的编辑,我已经将我的答案更正为您需要的真实列数。