VBA - 删除另一个工作表中的行 [英] VBA - Delete rows in another worksheet
问题描述
功能DeleteRows()
Dim wb As Workbook
设置wb =工作簿(ThisWorkbook.Name)
调试。打印wb.Name
Dim wsName As String
Dim ws As Worksheet
wsName =SheetX
设置ws = wb.Worksheets(wsName)
Debug.Print ws.Name
带有ws
Debug.Printws.name =& ws.Name
行(3:31)。选择
Selection.Delete Shift:= xlUp
结束
结束函数
我有这个功能,DeleteRows,从工作表SheetX中删除行3:31。
只有当SheetX是屏幕上显示的工作表时,才有效。
我想要在另一张纸上工作时,可以在工作簿中显示SheetY。我该怎么做?一个方法是:
1 - 激活SheetY
2 - 删除行
3 - 激活SheetX
但是这对用户来说不是透明的。欣赏帮助。
您应该始终尽量避免选择语句。他们几乎总是不必要的。该函数应该是一个Sub(因为它没有输出),并且可以重写为单行:
Sub DeleteRows()
ThisWorkbook.Sheets(SheetX)。Range(3:31)。删除xlUp
End Sub
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
I have this function, DeleteRows, that deletes the the rows 3:31 from the worksheet "SheetX".
This only works when "SheetX" is the sheet that is displayed on the screen.
I want it to work when another sheet, lets say "SheetY", in the workbook is displayed. How can I do this?
One way would be to: 1-activate "SheetY" 2-delete the rows 3-activate "SheetX"
But this would not be transparent to the user. Appreciate the help.
You should always try to avoid Select statements. They are almost always unnecessary. That function should be a Sub (because it doesn't have an output) and can be rewritten as a one-liner:
Sub DeleteRows()
ThisWorkbook.Sheets("SheetX").Range("3:31").Delete xlUp
End Sub
这篇关于VBA - 删除另一个工作表中的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!