• ベストアンサー

エクセル マクロ記述(変数を使用した行選択)

はじめまして。現在マクロで仕事に必要な操作を組んでいます。まだ勉強を始めたばかりで分からないところがあります。以下の操作をしたい場合、記述はどのようにすればよろしいでしょうか? 複数行の選択方法 ○5行目から27行を選択したい場合、以下の記述で  操作確認済みです。  Rows("5:27").Select ○しかし、実際は最後の行が決まっていないため、  最終行の数字を変数として扱いたいのです。  その最終行の数字をF1のセルに記載するようしています。  記述を以下のようにしましたがエラー表示になります。  変数名をintlineとした場合  dim intline as integer  intline=range("f1")  rows("5":intline).select 初歩的な質問かもしれませんが、ご存知の方は教えていただけますか? 宜しくお願いいたします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

integer じゃなく Long の方が良いです。  dim intline as long  intline=range("f1")  rows("5:" & intline).select 同様の結果を得る方法として、こんな方法もあります。 Sub test1()  Range("A5", Range("A65536").End(xlUp)).EntireRow.Select End Sub Sub test2()  Range("A5").CurrentRegion.EntireRow.Select End Sub

koelmo
質問者

お礼

早速の回答ありがとうございました!記載したところマクロのエラーもなくなり無事作業を進めることが出来ます。本当に助かりました。 まだまだ勉強中の身ですので、また質問させていただくこともあると思いますが、今後ともよろしくお願いいたします!

その他の回答 (2)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.3

こんばんは。 提示のコードを修正すると Rows("5:" & intline).select となります。 それから一般的には以下のようにして最終行を自動でもってきます。 -------------------------------------------- Dim LastRow As Long LastRow = Range("A65536").End(xlup).Row Rows("5:" & LastRow).Select --------------------------------------------- 尚、これはA列のデータの最終行を求めていますが、そこは適宜変更。 以上です。

koelmo
質問者

お礼

早速の回答ありがとうございました!皆さんのおかげで、無事作業を進めることが出来ます。一般的な方法も教えて頂きありがとうございました。意味を理解しながら、記述できるように頑張りたいと思います。 また質問させていただくこともあると思いますが、今後ともよろしくお願いいたします!

回答No.2

こんばんは。 ↓のようにしてみてください。 ----------------------------- Rows("5:" & intline).Select -----------------------------

koelmo
質問者

お礼

早速の回答ありがとうございました!まだまだ勉強中の身ですので、また質問させていただくこともあると思いますが、今後ともよろしくお願いいたします!

関連するQ&A

  • エクセル VBAで複数行の選択

    エクセル2002使用です。 VBAで変数を使って複数行の選択で、6行目から9行目までを選択したいのです。 sub macro2() Dim rw As Integer rw=8 Rows("rw - 2:rw + 1").Select end sub だとエラーになります。 Rows("6:9").Select のようにしたいのですがどこが悪いのでしょうか? よろしくお願いします。

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

    あるファイルのデータを別のファイルに行挿入でコピーするマクロを作ろうとしています。 コピー元の選択について、行範囲が固定であれば例えば   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行毎のコピー・行挿入をデータの行数だけ繰り返すという手もありますが、データ量が多いとかなり処理時間がかかるためこれも避けたいと思っています。 マクロ初心者で知識不十分ですが、よろしくお願いします。

  • エクセルの行選択マクロ

    エクセル2010にて。 行を選択した状態から、1行目から現在行の1つ上までを選択し、それを非表示とするマクロを組みたいのです。 VBAは全く分からず・・・ 変数を宣言し、その変数を代入すれば良いかと試行錯誤しましたが判らず。 Sub 3行目から現在行より上を選択して非表示() '  Dim x As Integer  x = ActiveCell.Row Rows("3:x-1").Select Selection.EntireRow.Hidden = True End Sub では、全く動作せず。。 例えば20行目を選択した状態で、マクロを実行すると3~19行目までが非表示になるようにしたいのです。御教示下さいませ。

  • エクセルのマクロで行選択

    現在、エクセルでマクロを組んでいます。 行いたい内容としては 1.行6~1765までを選択 2. 1.で選択した行を非表示 3. 行6~"セルH2の値"までをを選択 4. 3.で選択した行を再表示 3の段階で失敗してしまいます。 Rangeメソッドに失敗しました、と出ます ソースは以下のとおりです ----- Private Sub CommandButton2_Click() Dim x As Integer Range("6:1765").EntireRow.Select Selection.EntireRow.Hidden = True x = Range("H2").Value Range("6:x").EntireRow.Select Selection.EntireRow.Hidden = False End Sub ---- 解決法がわかる方、教えてください よろしくお願いします。

  • エクセル VBA の行選択

    エクセルVBAで行を選択する場合 Rows(1,1).select Range(Cells(2,2),Cells(5, 5)).EntireRow.Select の方法があると知りました。 この数値の部分に変数を入れるとエラーがでてしまいました。 どうすれば変数で行を選択することができるのか教えてください。 2003を使用しております。

  • EXCELマクロデータのある行より下の行削除の構文

    EXCELマクロ構文について教えてください。 データのある行のひとつ下の行全体選択し、 Ctrl+Shift+↓で下部行全て選択し、右クリックで削除する 操作をマクロにしたいのでですが、 マクロ記録では上の操作は Rows("189:189").Select Range(Selection, Selection.End(xlDown)).Select Selection.Delete Shift:=xlU  になります。 この 189 という数字は 下記の変数定義で「lastRow」として取得できるのですが Dim lastRow As Long lastRow = Sheets("2CVS関西").Cells(Rows.Count, 2).End(xlUp).Row + 1 189にlastRow に置き換える方法お教えください。

  • エクセルマクロの行選択

    複数行選択するマクロで Rows("1:10").Select の括弧の中に変数を入れたいのですがうまくいきません。"や&を使ってみたのですがいまいちわかりません。 よろしくお願いします。

  • 変数を使って行選択

    おそらく他愛のない質問だとは思うのですが教えてください。 Rows(3:3)select とやると、アクティブなシートの3行目が選択されると思います。 3のところを両方とも変数にするとか、 たとえばforを使ってカウントアップさせている変数の値と同じ行を 選択させるにはどのように入力すれば良いものでしょうか? ご教授願います。

  • エクセルマクロ コピー時の記述(位置検出含む)

    Dim Lstrow As Integer '変数の型を宣言 Lstrow = Cells(Rows.Count, 22).End(xlUp).Row '英語不合格者の表の最終行までの行数を数える Range(Cells(3, 22), Cells(Lstrow, 27)).Copy _   '上の表の「見出し」を除いた部分を選択し、コピーし、 Destination:=Range("aj300").End(xlUp).Offset(1)  '別の表の下に接続して貼り付ける という、記述をしました。(これまでこちらで教えていただいたことを組み合わせました。) 最後の貼り付けの番地指定のところで質問なのですが、"aj"列を300行から上がって検出するという記述ではなく、Lstrow = Cells(Rows.Count, 22).End(xlUp).Rowのような方法で、表の長さにかかわらず使用できる汎用性のある記述を教えてください。 よろしくお願いいたします。

  • エクセルマクロで行の選択のしかた

    教えてください。エクセルマクロで… 変数iを使って、たとえばi行目からi+2行目を選択したい場合、  rows( ) の括弧の中はどういう風に記述すれば良いのでしょうか。 お願いします。

専門家に質問してみよう