我正在尝试在两张纸上运行这个VBA代码,它在第一张纸上工作正常,但在第二张纸上失败了 - 任何想法为什么?
错误是:运行时错误'1004':无法对重叠选择使用该命令。
Private Sub DeleteBlankRowsHoursTable_Click()
Dim Rng As Range
On Error Resume Next
Set Rng = ActiveSheet.Range("DataHoursTable").SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not Rng Is Nothing Then
Rng.Delete Shift:=xlUp
End If
End Sub
答案 0 :(得分:0)
我假设两张纸上都有这个范围?尝试指定工作表。 如果你改变:
Set Rng = Range("DataHoursTable").Spec...
到
Set Rng = Activesheet.Range("DataHoursTable").Spec...
它将Set
范围扩展到当前活动工作表上的命名范围。
答案 1 :(得分:0)
编辑(阅读更新后的问题): 您的问题是您有2张纸,您想要相同的功能。但是,命名范围必须是唯一的,以及按钮名称。
因此: 在表1中,让我们说按钮被调用" DeleteBlankRowsHoursTable1"你希望运行的命名范围/表被称为" DataHoursTable1"。 在表2上,该按钮将被调用" DeleteBlankRowsHoursTable2"和命名范围" DataHoursTable2"。 然后,在VBA编辑器中,将以下代码放在工作表1中:
Private Sub DeleteBlankRowsHoursTable1_Click()
Dim Rng As Range
On Error Resume Next
Set Rng = Me.Range("DataHoursTable1").SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not Rng Is Nothing Then
Rng.Delete Shift:=xlUp
End If
End Sub
在第二个工作表中:
Private Sub DeleteBlankRowsHoursTable2_Click()
Dim Rng As Range
On Error Resume Next
Set Rng = Me.Range("DataHoursTable2").SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not Rng Is Nothing Then
Rng.Delete Shift:=xlUp
End If
End Sub
请注意,您不能使用" ActiveSheet",而是" Me",因为在工作表内编码时,它会引用工作表本身。