VBA - 删除另一个工作表中的行 [英] VBA - Delete rows in another worksheet

查看:945
本文介绍了VBA - 删除另一个工作表中的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 功能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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆