2012-10-09 47 views
2

我有一个相当简单的电子表格应用程序,其中包含一些VBA代码,用于执行用户调用的简单行插入和删除操作。这是一个高度格式化的电子表格,供没有Excel体验的人使用。插入和删除的代码很好。删除Excel行而不隐藏另一个,VBA

该工作表使用15行,并且该点下面的每一行都被隐藏。但是,在删除一个完整的行时,每个后面的行按照标准向上移动,留下一个'新'空白行15.我希望这种行为被推翻,并且出现空行而不是

可能很简单吗?防止这种行为的选择是什么,如果不可能的话,是否有任何提示可以抓取表格的“最后可见”行的标识,以便手动将其隐藏起来?

干杯

回答

1

您可能需要调整这个您的需要的例子,但这应该工作。

Sub GetLastVisibleCell() 

Dim rng As Range 

Set rng = ActiveSheet.Columns(1).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeLastCell) 

If rng = vbNullString Then rng.EntireRow.Hidden = True 


End Sub 
+0

就是这样,完美,谢谢。 – tidesson

+0

@ user1731769 - >你可能知道了这一点,但我只是意识到我大量错误地隐藏了一行的语法。我用正确的语法编辑了我的帖子。 –

1

而不是删除行,明确它来代替:

msdn给出

Worksheets("Sheet1").Range("A1:G37").ClearContents 
+0

不要忘了你可能还想清楚格式化和注释......'.ClearFormats'和'.ClearNotes'分别。 – Gaffi

+0

不幸的是,它必须是全行选择和删除...每一行都包含许多用户输入,以及大量依赖前一行和相邻行/列的公式。我玩过使用预设配置(例如50格式化行)并根据需要隐藏/取消隐藏的想法,但对用户可能需要的行数没有限制。为了解决概念上看起来很简单的问题,似乎也有点混乱的解决方案? – tidesson

0

最后一个可见行也可以用结束(xlup)语法返回。假设您的列A有每个非空行的数据。

Sub GetLastVisibleCell() 

Dim rng As Range 

Set rng = cells(rows.count,1).end(xlup) 
rng.EntireRow.Hidden = True 


End Sub