经常需要动态删除程序中的行和列,但通常很难获得。 Excel 2002(XP)中包含的VB-6帮助文件并不总是提供执行此操作所需的帮助。
通过记录宏,可以开发以下代码段:
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 9/16/2009 by Ebernon
'
'
Rows("1:20").Select
Selection.Delete Shift:=xlUp
End Sub
但是,宏记录的行是使用静态“ A1参考”注释(Excel的默认值)确定的,这不允许在程序中删除“动态”行设置。
您可以将引用“ 1:20”更改为数字或变量,但随后可以引用单个Row。
要解决此问题,以下代码片段提供了要使用“范围对象”方法删除的行的动态设置:
Sub Macro2()
'
' Macro2 Macro
' Macro recorded 9/16/2009 by Ebernon
'
'
N1 = 20
N2 = 1
Range(Rows(N1), Rows(N2)).Select
Selection.Delete Shift:=xlUp
End Sub
请注意,开始行和结束行N1和N2不必按任何顺序排列,因为Excel中的范围对象会自动对此进行调整。
而且,现在可以在程序中或通过操作员输入的数据来设置N1和N2。
对于列,只需将“ Range(Columns(N1),Columns(N2))。Select”替换为要删除的范围。
最后的注意:删除添加了链接的单元格时要小心,这将导致在链接到已删除单元格的单元格或范围中出现错误。
编程愉快!
From: https://bytes.com/topic/visual-basic/insights/874304-dynamic-deletions-rows-columns