※ ChatGPTを利用し、要約された質問です(原文:VBScript エクセル 最終行と最終列取得)
VBScriptエクセルで最終行と最終列を取得する方法
このQ&Aのポイント
VBScriptを使用して、エクセルのシート内での最終行と最終列を取得する方法について教えてください。
現在、複数のシートが含まれるエクセルファイルがあります。項目行は「C6」以降に配置され、項目列は「D5」以降に配置されています。
項目行と項目列には空白のセルが存在しない場合、VBScriptで項目行と項目列の最終位置を取得する方法を知りたいです。
今、たくさんのシートがある、エクセルのファイルがあり、「C6」以降が縦の項目行、「D5」以降が横の項目列です。
項目行と項目列には、間に空白のセルは存在しません。
この状態で、項目行、項目列の最終の場所を取得しなければなりません。
そこで、「r = Range("C6").End(-4121).Row」(「-4121」は「xlDown」)、「c = Range("D5").End(-4161).Column」(「-4161」は「xlToRight」)で次々に求めていったのですが、「C6」に縦の項目が1つだけ、「D5」に横の項目が1つだけ、というシートがありました。
すると、そのシートでは、「r」と「c」の値は、エクセルそのものの最大の行数と最大の列数が返ってきてしまいました。
そこで、「D6」にのみ、文字があるサンプルファイルを作り、そのサンプルファイルに対して、「r = Range("D5").End(-4121).Row」と「c = Range("C6").End(-4161).Column)」で求めると、ちゃんと、「r = 6」、「c = 4」という値が返ってきたので、「r」の場合は、1つ上から、「c」については、1つ左から「Range」を設定すればいい、と思って、実際のデータで試すと、他のシートでは、全然うまくゆきません。
結果的に、問題は、「If」文で、ムリヤリ解決させたのですが、「If」文の場合ですと、前もって全シートを確認して、調べておかなければなりません。
何とか、汎用的に項目が1つしかない場合も、その項目のある「行」と「列」が最終行、最終列として取得できる方法はないでしょうか?
ただし、項目が「0個」ということはありませんので、そこまで考えて頂く必要はありません。
「VBA」でも結構ですので、よろしくお願いいたします。
お礼
さっそく、ありがとうございます。 そうですね、なぜ、気づかなかったのでしょう。 実は、本当は、実際のデータの最終行と最終列を求めたかったのですが、あまりにもデータがばらばらなので、あきらめて、項目の最終行と最終列を取得することにしました。 データの最終行と最終列の取得のプログラムを考えていたときは、後ろから取得する方法で考えていたのに、項目の時は、空白のセルが間にはさまらないことに、無意識にこだわりすぎていました。 ありがとうございました。