我将一个VBA代码放在一个工作表上的表格中,然后将它们插入到另一个没有空白单元格的工作表中,然后清除原始表单。
然而,我遇到错误"运行时错误1004:命令不能用于多个选择"并且无法弄清楚是什么原因造成的。经过一些研究后,似乎保存并重新打开工作簿会使这个错误消失,但并非总是如此。
有什么想法吗?
Sub DataEntry()
'--- Find rows that contain any value in column G or H and copy them
Dim cell As Range
Dim selectRange As Range
For Each cell In ActiveSheet.Range("G3:H90")
If (cell.Value <> "") Then
If selectRange Is Nothing Then
Set selectRange = cell
Else
Set selectRange = Union(cell, selectRange)
End If
End If
Next cell
selectRange.EntireRow.Select
selectRange.EntireRow.Copy
'Paste copied selection to the worksheet 'Data' on the next blank row
Sheets("Data").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial _
Paste:=xlPasteValues
'Delete content of rows after copy and paste
Union(Range("G3:G150"), Range("H3:H150")).ClearContents
答案 0 :(得分:-1)
问题似乎是EntireRow
属性正在成为变体,而不是范围。我最初尝试通过将变量声明为Range来解决这个问题,但这也没有用。但是,通过在行上执行原始Union
而不是单元格,我能够使其工作。
Sub DataEntry()
'Find rows that contain any value in column G or H and copy them
Dim cell As Range
Dim selectRange As Range
Dim rowRange As Range
For Each cell In ActiveSheet.Range("G3:H90")
If (cell.Value <> "") Then
If selectRange Is Nothing Then
Set selectRange = cell.EntireRow
Else
Set selectRange = Union(cell.EntireRow, selectRange)
End If
End If
Next cell
'No need to select anything here, just copy.
selectRange.Copy
.....
我不完全确定为什么会这样,但这为我解决了这个问题。
已编辑,因为原始修复无效。