• ベストアンサー

選択した範囲の、行数を取得するには?(Excel2000マクロ)

Excel2000でマクロを作っています。 任意の長さのテキストファイルをExcelにコピーした状態で、 そのデータの最後の行No.を知る方法を教えてください。 For文で1行目から最後の行までチェックする関数を作っています。 最初のセルの位置は決まっていますが、最後の行(行数)がバラバラで、 しかもデータの間に空行(改行のみ)も混じっています。 コピー→貼り付けの後マクロを実行するので、全データは選択された状態からスタートします。 選択された範囲の最後の行No.を認識する方法があればいいのですが… わかりにくい文章で申し訳ありません、必要があれば補足させていただきます。

  • oddo
  • お礼率86% (174/201)

質問者が選んだベストアンサー

  • ベストアンサー
noname#29107
noname#29107
回答No.1

選択範囲の最終行を求めるサンプルです。 Debug.Print Selection.Rows(Selection.Rows.Count).Row

oddo
質問者

お礼

rebellionさん、早速の回答ありがとうございました。 試してみたところ、質問に書いたとおりの動作が出来て感激しました! また何かあればよろしくおねがいします。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

Sub test01() r=Selection.SpecialCells(xlCellTypeLastCell).Row Msgbox r End Sub と言うのはどうでしょう。

oddo
質問者

お礼

imogasiさん、早速の回答ありがとうございました。 一つの処理に対して色々な方法があって、勉強になります。 教えていただいた方法を参考にさせていただきます。 また何かあればよろしくおねがいします。

  • inte-nori
  • ベストアンサー率48% (33/68)
回答No.2

a = Range("A65535").End(xlUp).Row などとしてみてはどうでしょう? データが一件もない場合も「1」となってしまいますが。

oddo
質問者

お礼

inte-noriさん、早速の回答ありがとうございました。 データが一件もないということは無いように作りますので大丈夫です! No1の方の回答とは違って、最後に空行があった場合はカウントしないようになっているのですね。 また何かあればよろしくおねがいします。

関連するQ&A

  • Excel最後の行まで選択するマクロの書き方

    こんにちは。 Excel 2010を使用しています。 マクロの記録でデーターを並び替えています。 やりたいことは並び替えたデーターをすべてコピーして 新しいブックにコピーすることです。 ただ毎回データーの行数が異なるのでマクロの記録では 対応できません。 どのようにマクロを書けば、最終行を見つけてすべての 行がコピーできるか書き方をお教えください。 よろしくお願いいたします。

  • エクセルで、毎回違う行数をコピーするマクロ

    こんにちは Excel2003 を使用しています。 マクロを使って毎回行数が違うデータをコピー貼り付けをしたいのですが よく分かりません。コピー先の最終行そろえのコピーの方法もお願いします。 毎回データ行数が違う2つの表を、新しい表の上の部分と下の部分に分けてコピーしたいのです。 コピー元1 0~20行 コピー元2 0~20行  1と2の合計は、0~20行です。多くても20行まで。 コピー元1を1行目から、コピー元2の最下行を20行目に揃えて、 貼り付け先の表には、上部と下部の間に空白行が入っOKです。 (例) コピー元1          コピー元2  X   Y   Z         AA   AB   AC 1鈴木 千葉 男      1山本 大阪 男 2田中 東京 女      2高橋 京都 女 3                3  ↓↓ 貼り付け先  A   B   C 1鈴木 千葉 男 2田中 東京 女 3 ・ ・ 18 19山本 大阪 男 20高橋 京都 女 のように上部と下部に分けてコピーしたいのです。 行数は毎回ちがい、合わせて20行の場合は、空白行はなくなります。 説明が、つたなく申し訳ありませんが よろしくお願いいたします。

  • エクセルのマクロでクリップボードの使い分け。

    マクロ初心者です。任意のシートの任意の列(先に選択しておきます。)とそのシートのA列を特定のシートの2列に並べてコピーしたいのですが、クリップボードを使ってマクロ記録をしても、実行すると貼り付けの段階でエラーが起こります。クリップボードの中身を一つ目のデータ、二つ目のデータというように、選択して貼り付けすることは無理なのでしょうか。あるいは、一つ目のデータをコピー・貼り付けした後、元の任意のシートに戻る方法はないでしょうか。どなたか教えてください。よろしくお願いします。Excel2000を使っています。

  • エクセル:列の範囲選択をうまくできないでしょうか ?

    行数が約2000行ほどの表を毎月使用します。それでいろんな列をコピーして別の表に貼り付けたいのですが、列のコピーをする時に範囲指定でドラッグに結構時間がかかります。これをマクロでやりたいんですが、カーソルをおいた列の一番下の行まで範囲を指定すると言うのをマクロでできないでしょうか? 自動記録でマクロを造ろうとすると、実行した列を選択してしまい、任意の列の選択ができません。 よろしくおねがいします。

  • エクセルのマクロで行選択の選択範囲を変数指定する方法

    あるファイルのデータを別のファイルに行挿入でコピーするマクロを作ろうとしています。 コピー元の選択について、行範囲が固定であれば例えば   Rows("10:20").Select でよいのですが、コピー元行範囲がファイルにより異なるので変数化する必要があります。 単純には、 Sub Row_Copy() Dim AA, BB As Integer AA = 10 BB = 20 ' 10行目から20行目を行選択しコピーする Rows("AA:BB").Select '##ここが問題## Selection.Copy ' ' (簡単のため)同じシートに行挿入する例 Rows("30:30").Select Selection.Insert Shift:=xlDown End Sub ですが、これだと Rows("AA:BB").Select の部分でエラーになります。 いろいろとやってみましたが、どうしても何らかのエラーになってしまいます。Rowsは変数では使用できないのでしょうか? ちなみに、行範囲の選択ではなくRangeでセル範囲の選択をするという方法もありますが、複数ファイルのデータをコピー先の一つのファイルにマージするために行挿入でコピーしたいことと、列方向の柔軟性を持たせたいため、コピー元選択方法として行範囲の指定をしたいという趣旨があります。 また、1行毎のコピー・行挿入をデータの行数だけ繰り返すという手もありますが、データ量が多いとかなり処理時間がかかるためこれも避けたいと思っています。 マクロ初心者で知識不十分ですが、よろしくお願いします。

  • 特定行の選択、抽出

    大きな数字のCSVデータを整理するとき、今までは、CTRLで1行ずつ選択していましたが、行数が大きい場合のよい方法を教えてください。マクロでやってみましたが行数が多くなるとどうもうまくいきません。選択したい行は、5、10、15、20、25、---5640。(他のシートにコピー)、規則的です。

  • 選択しているセルの行数の取得

    エクセルのマクロに関する質問です。 ある表を作っているのですが、 その表の中で不要になった行を削除するマクロを作っています。 不要な行のセルを選択してアクティブにし、 マクロを登録したボタンをクリックすると その行が削除されるというものです。 その際に、削除は1行ずつ行いたいと考えています。 (一度に2行削除させたくない。) そこで、もし2行以上を選択した場合には ボタンをクリックした時に 「2行以上は選択できません」 とメッセージを表示し、 マクロを中断させたいのです。 その時に選択しているのが1行なのか 2行以上なのかを取得する方法をおしえてください。

  • Excel行数変更

    現在Excel2010を使用しています。600万行のデータをExcelにて使用したいのですが、104万行までしか表示されません。そこで、VBAにて行数を変更し、Excelにて加工したいのですがどの様にすれば良いか教えて下さい。

  • マクロの記録でエラーになります。WindowsXPでExcel2007

    マクロの記録でエラーになります。WindowsXPでExcel2007を使用です。 マクロを記録する際に使うデータの総行数が500だったとして、そのマクロを別のエクセルファイルで実行したい場合、別ファイルのデータ行数が500行より少ない(または多い)場合にエラーになってしまいます。 現象としては、A列にカウントしたいデータがあり、COUNTIF関数をB2に入れて、B2セルにカーソルを合わせたままダブルクリックでB500までコピーする、という作業をマクロに記録しましたが、別のブックで行数の違うデータにこのマクロを実行すると、データがB500より少なくても多くても、とにかくB500まで実行されます。※例えば少ない場合はデータのない行に「0」という感じでB500までデータが自動的に入ってしまいます。 マクロ記録では、この辺りを柔軟に「A列にデータがあるところまで」というような指定の仕方はできるでしょうか? マクロ初心者なので説明がうまくできず申し訳ありません。よろしくお願いいたします。

  • マクロを使って範囲選択したい

     エクセルのセルにランダムに入力されたデータについて、データが入力されたセル(データが入っていない空白部分も含めて)全てを範囲選択したいのですが、マクロを利用してできますでしょうか。  その後、コピーペーストする予定なのですが、シート全体を選択する方法は駄目です。あと、空白セルも存在するので、入力された1つのセルを選択して、ctrl+Shift+*も駄目です。  もともとのデータは、OCRソフトで読み込こんだデータをエクセルにしたものなので、基本ぐちゃぐちゃにデータが入力された状態になっています。  わかりずらい質問かもしれませんが、回答願います。