我有两个问题:
我有一排来自网站的4000行数据,我正在尝试清理并从所有非空行中获取相关数据(来自B-G列)。
此代码产生1004运行时错误,在调试器中突出显示设置范围。
Sub Schaltfläche1_Klicken()
Dim i As Integer
Dim j As Integer
Dim varRangeselect1 As Range
Dim varRangeSelect2 As Range
For i = 1 To 20
j = 1
If Worksheets("Input").Cells(i, 2).Value <> "" Then
Set varRangeselect1 = Worksheets("Input").Range(Cells(i, 1), Cells(i, 7))
Set varRangeSelect2 = Worksheets("Output").Range(Cells(j, 1), Cells(j, 7))
varRangeselect1.Copy
varRangeSelect2.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
j = j + 1
End If
Next i
End Sub
在输出表中,我希望数据在第一行中是空的,是否适用于该任务?
非常感谢
答案 0 :(得分:1)
您需要完全限定范围。例如
Set varRangeselect1 = Worksheets("Input").Range( _
Worksheets("Input").Cells(i, 1), _
Worksheets("Input").Cells(i, 7) _
)
Set varRangeSelect2 = Worksheets("Output").Range( _
Worksheets("Output").Cells(j, 1), _
Worksheets("Output").Cells(j, 7) _
)
如果单元格对象未完全限定,那么您将获得1004应用程序定义错误。
答案 1 :(得分:1)
你真的没有清理过。您似乎正在做的就是删除B列中的值为空的行。为此你可以使用数据&gt;过滤
您还可以使用数据&gt;在宏中过滤,因为无论如何都使用VBA,没有理由循环。