VBA - 删除另一个工作表中的行

时间:2013-11-26 01:05:23

标签: excel vba excel-vba rows

Function DeleteRows()

Dim wb As Workbook
Set wb = Workbooks(ThisWorkbook.Name)

Debug.Print wb.Name

Dim wsName As String
Dim ws As Worksheet
wsName = "SheetX"
Set ws = wb.Worksheets(wsName)

Debug.Print ws.Name


With ws
        Debug.Print "ws.name = " & ws.Name
        Rows("3:31").Select

        Selection.Delete Shift:=xlUp

End With
End Function

我有这个函数DeleteRows,它从工作表“SheetX”中删除行3:31。

这仅适用于“SheetX”是屏幕上显示的工作表。

我希望它能在工作簿中显示另一张工作表时说“SheetY”。我怎样才能做到这一点?

一种方法是: 1 - 激活“SheetY” 2 - 删除行 3 - 激活“SheetX”

但这对用户来说并不透明。感谢帮助。

1 个答案:

答案 0 :(得分:4)

您应该始终尝试避免使用Select语句。它们几乎总是不必要的。该函数应该是Sub(因为它没有输出)并且可以重写为单行:

Sub DeleteRows()

    ThisWorkbook.Sheets("SheetX").Range("3:31").Delete xlUp

End Sub