1

我正在尝试使用 VBA 隐藏行。我有开始行,我必须从那里开始隐藏行。我写了以下代码:

sht.Rows(32 + end_row).Resize(, 65536 - (32 + end_row)).Select
Selection.EntireRow.Hidden = True

哪里end_row是数据将在我的 Excel 工作表中填充的行,并且32是开始填充数据的行的索引。当我尝试运行此代码时,它会出现错误,

应用程序定义或对象定义的错误

我该如何解决这个问题,最好的方法是什么?

4

2 回答 2

2

在这份声明中。

Resize(, 65536 - (32 + end_row)).Select   

你混淆了行和列..

你可能是说Resize(65536 - (32 + end_row)).Select

Resize([Rows],[Columns])

写这样的东西要好得多(避免使用Select

Sheet1.Rows.Resize(65536 - (32 + end_row)).EntireRow.Hidden = True

此代码隐藏了工作表顶部的所有行,并使工作表底部的行可见。我假设您希望反过来。


这段代码可能会有所帮助。它将隐藏 A 列中最后一个条目下方的所有空白行

Dim sht As Worksheet
Set sht = Sheet1

sht.Range(sht.Cells(sht.Rows.Count, 1), sht.Cells(sht.Rows.Count, 1).End(xlUp).Offset(1)).Rows.Hidden = True
于 2013-11-06T10:20:01.800 回答
0

另一种方式可能是:

'Expected sht is a sheet object, else use : ActiveSheet.Rows("32:" & end_row).Hidden = True
sht.Rows("32:" & end_row).Hidden = True

避免使用 65535 限制

于 2013-11-06T10:29:44.043 回答