• ベストアンサー

エクセルのVBAで行選択

エクセルVBAで、連続してない2行(たとえば10行目と13行目)を選択する場合 Sub test02() Dim x As Long, y As Long x = 10 y = 13 Range(x & ":" & x & "," & y & ":" & y).Select End Sub でできましたが、もっと簡単に書く方法はないでしょうか?

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

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

union(rows(10),rows(13)).Select

mocodne
質問者

お礼

ありがとうございます。 歳のせいかUnionなんてコードをすっかり忘れていました。 Sub test03() Dim x As Long, y As Long x = 10 y = 13 Union(Rows(x), Rows(y)).Select End Sub で目的を達成出来ました。

その他の回答 (2)

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

Sub test01() Set Rng = Union(Range("12:12"), Range("15:15")) Rng.Select End Sub のようなのはどうだろう。 こう書けても、選択したのちに何をしたいのか書かないと、この書き方が適当かどうか言えないように思うが。 ・2行の書式設定 ・2行の値のクリア ・2行の各セルの値の処理 3番目の場合は、メリットがあるかな

mocodne
質問者

お礼

Union(Rows(x), Rows(y)).Select ですっきりしました。 ありがとうございます。

  • mdmp2
  • ベストアンサー率55% (438/787)
回答No.2

十分簡単にできていると思います。 選択する行がその都度変わるのだと思いますので、No.1 さんの回答のunion(rows(10),rows(13)).Select の10と13 をx, y にすると良いと思います。(動作確認しておりません。) 選択する行を、マクロ実行中に指定するなら inputbox 関数を使ってx とy の値をマクロ実行中に入力するようにすると良いと思います。

mocodne
質問者

お礼

お察しの通り選択する行がその都度変わります。 そのため変数にしているのですが、今の書き方は書きにくいし見にくいです。 Union(Rows(x), Rows(y)).Select ですっきりしました。

関連する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 のようにしたいのですがどこが悪いのでしょうか? よろしくお願いします。

  • EXCEL(VBA)で1行おきに行を選択する方法

    こんにちは。VBAは苦手なので教えてください。 EXCELのsheet1にあるリストに、下記マクロで1行おきに 空白行を挿入しました。 Sub test1() '隔行で空白行を挿入 Dim rw As Long 'セル For rw = Range("A1").End(xlDown).Row To 2 Step -1 Rows(rw).Insert Next End Sub 同じファイルのSheet2の1行目<Rows("1:1")>に、計算式が入力されています。 マクロで挿入した空白行全てを選択し、そこへSheet2の1行目のコピーを 貼り付けたいです。 ぜひ、良い方法を教えてください。

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

    現在、エクセルでマクロを組んでいます。 行いたい内容としては 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 ---- 解決法がわかる方、教えてください よろしくお願いします。

  • EXCELのVBAで2行を選択。

    EXCELのVBAで2行を選択するには ROW("1:2").selectでいいと思うんですが、 X行からY行まで選択にしようと思えばどうしたらいいですか? ROW("X:Y")だとエラーになって出来ないみたいです。 なんかいい方法ありますか?

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

    エクセル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行目までが非表示になるようにしたいのです。御教示下さいませ。

  • VBAで、タイトル行(1行目)が移動できないようにしたい。

    以下のVBAで、最新仕入の情報はボタンを押すと(マクロを実行させると)別シートの正しい位置に移動します。 しかし、 newWSの2行目に、データが無い場合でボタンを押すとタイトル行(1行目)が、ruiWS シートの最終行の下に入ってしまい、困っています。 newWS の2行目にデータが無い場合には、ボタンを押しても、タイトル行が移動できないようにして、メッセージボックスで『データがありませんよ』と知らせるには、 どのようなプロシージャを書けばよいのか?教えていただきたくお願いします。 (VBAは、初心者です) Sub Macro1() Dim newWS As Worksheet Dim ruiWS As Worksheet Dim newCcount As Long Dim newRcount As Long Dim ruiCcount As Long Dim ruiRcount As Long Set newWS = Worksheets("最新仕入れ情報") Set ruiWS = Worksheets("累積仕入れ情報") newRcount = newWS.UsedRange.Rows.Count ruiRcount = ruiWS.UsedRange.Rows.Count newWS.Range("A2:F" & newRcount).Cut ruiWS.Select Range("B" & (ruiRcount + 1)).Select ActiveSheet.Paste End Sub

  • VBA 最終行を選んだシートにコピーする。

    VBAど初心者です。どうしても最終行のデータを選んだシートにコピーできません。 LastRow.Selectのところで、止まってしまいます。どのように行を設定していいのかさっぱりわかりません。どなたか、ご指導のほどよろしくお願いします。 Sub copy_last_line() Dim LastRow As Long Sheets("Sheet1").Select LastRow = Cells(Rows.Count, 1).End(xlUp).Row LastRow.Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("A1").Select End Sub

  • セルを選択するマクロ(エクセル)

    Sub test() x = ActiveCell.Row y = ActiveCell.End(xlToLeft).Column z = ActiveCell.End(xlToRight).Column Range(Cells(x, y), Cells(x, z)).Select End Sub アクティブセルが含まれている行のみで、データが入力されている連続したセルを選択状態にするマクロとして、上記を考えました。 上記を違った形でもっと簡潔に表すことは可能でしょうか?

  • Excel VBA 2007: 選択されているセルを含む行を処理?

    いつもお世話になります。 以下の問題について何かわかりましたらご教示ください。 複数のセルが選択されているとします。 選択されているセルを■、されていないセルを□とします。 問題は「選択されているセルを含む行のE列にマークをしろ」です。 (例題1) \ABCDE 1□□□□□ 2□□■□□ 3□□■□□ 4□□■□□ 5□□□□□ 今、C2、C3、C4が選択されています。 影響のある行は2,3,4行目ですので、以下のようになります。 (マークを*で示します) \ABCDE 1□□□□□ 2□□■□* 3□□■□* 4□□■□* 5□□□□□ 以下、前と後で例題を示します。 (例題2) \ABCDE 1□□□□□ 2■■□□□ 3□□□□□ 4□□□□□ 5□□□□□ => \ABCDE 1□□□□□ 2■■□□* 3□□□□□ 4□□□□□ 5□□□□□ (例題3) \ABCDE 1□□□□□ 2□□□□□ 3□□□□□ 4□□□■□ 5□□■■□ => \ABCDE 1□□□□□ 2□□□□□ 3□□□□□ 4□□□■* 5□□■■* (例題4) \ABCDE 1■□□□□ 2□■□□□ 3□□□□□ 4□□□■□ 5□□□□□ => \ABCDE 1■□□□* 2□■□□* 3□□□□□ 4□□□■* 5□□□□□ 以下のようにやればわかっているんですが、この場合は縦方向だけでなく横方向にも処理するので、同じ行について何回も処理が発生してしまいます。 実際には縦にも横にもすごく広いので、避けたいところです。 Sub test() Dim cell As Range For Each cell In Selection Cells(cell.row, 5).Value = "*" Next cell End Sub 以下のようにすれば必ず縦方向優先ですが、同じ理由で避けたいです。 Sub test() Dim myRow as long Dim myCol as long For myRow = 1 to 65536 For myCol = 1 to 4 If Cells(myRow, myCol).Selected Then Cells(myRow, 5).Value = "*" Exit For End If Next myCol Next myRow End Sub もっといい方法があればご教示ください。 よろしくお願いします!

  • エクセル VBA シートの選択 

    windows XP でエクセル2000を使っています。 Sub aaa() Sheets("Sheet1").Select Dim a As String a = Cells(2, 4) Sheets(a).Select Range("A1").Select End Sub というマクロだと セルに入っている値のシート名を探してくれます。 ですが Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Intersect(Target, Range("B11:b683")) Is Nothing Then Exit Sub Worksheets("Sheet1").Range("C2").Value = Target.Value Dim b As String b = Range("C2).value (←ここをcellsにしてもダメ) Sheets(b).Select Range("A1").Select End Sub これだとsheets(b)を選びません。Sheets(b).Selectのところが黄色くなります。 何処が間違えているのでしょうか。 全くの素人ですが、仕事で必要に迫られています。 わかりやすく回答・解説くれると助かります。

専門家に質問してみよう