1

VBA を使用して行を非表示にしようとしています。行の非表示を開始する必要がある場所から開始行があります。私は次のコードを書きました:

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

whereend_rowは、データが Excel シートに入力される行 til であり、データの入力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 に答える