0

「MyRange」という名前の範囲があります。と定義してい='Sheet1'!$A:$Aます。VBAには、式がありLastRow= Cells(Rows.Count, Range("MyRange").Column).End(xlUp).Rowます。名前付き範囲のデータを含む最後の行を返す必要があります。ただし、現在のシートの列 A の最後の行を返します。シート参照が名前付き範囲から削除されているのはなぜですか? また、それを所定の位置に保持するにはどうすればよいですか?

4

3 に答える 3

2

コードの構文は、Cells 引数と Rows 引数の両方で、名前付き範囲のシートではなく、アクティブなシートを参照するようなものです。

シート参照を維持するための構文は次のようになります。

With Range("myrange").Worksheet
    LastRow = .Cells(.Rows.Count, [myrange].Column).End(xlUp).Row
End With

セル、および行 (および列) の前の「ドット」に注意してください。

于 2014-06-18T19:34:35.660 に答える
1

これを使用してみてください:

LastRow = range("MyRange").Worksheet.Cells(Rows.Count, Range("MyRange").Column).End(xlUp).Row

編集別の回答と同じ方法:)回答を完了するのに時間がかかりすぎました!

失敗した理由は、CELLS がデフォルトで現在アクティブなシートを参照しているためです。Range("MyRange").Worksheet を CELLS の前に追加すると、"MyRange" が含まれるワークシートで動作します。

于 2014-06-18T20:03:42.947 に答える