• ベストアンサー

VBAでのセルの範囲選択について

添付画像のような表が複数あり、1行の間隔で赤色セルの範囲を選択したいです。 行数や表が増えた場合を考慮した記述にしたいと思っております。 よい方法があれば教えていただければ幸いです。 お手数お掛けいたしますが、よろしくお願い致します。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 昨日の >http://okwave.jp/qa/q8536162.html の応用で大丈夫だと思います。 色で判断するのではなく、画像通り規則正しい場合は Sub Sample1() Dim i As Long, myRange As Range Set myRange = Range("C4").Resize(, 5) For i = 4 To Cells(Rows.Count, "B").End(xlUp).Row Step 9 '←B列で最終行取得 Set myRange = Union(myRange, Cells(i, "C").Resize(, 5), Cells(i + 2, "C").Resize(, 5)) Next i myRange.Select End Sub ※ B列で最終行を取得しています。 こんなんではどうでしょうか?m(_ _)m

HNK1001
質問者

補足

こんにちは。ご回答くださりありがとうございます。 表の行数が10行増えた場合は、「Step 9」の箇所を「Step 19」に変更すればよろしいでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>赤色セルの範囲を選択したいです。 参考に Sub Test()   Dim myRng As Range, c As Range   For Each c In ActiveSheet.UsedRange     If c.Interior.Color = vbRed Then       If myRng Is Nothing Then         Set myRng = c       Else         Set myRng = Union(myRng, c)       End If     End If   Next   myRng.Select End Sub

HNK1001
質問者

お礼

ご回答いただき ありがとうございました。 色を指定してカウントする方法もあるのですね!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【VBA】セル範囲選択の繰り返し

    添付画像の表が複数あります。画像の赤色セルように、1行の間隔でセル範囲を選択し、表の数だけ繰り返して、すべての範囲に対して下記のような処理を行いたいです。表の選択行数が増えた場合をや表の数が増えた場合を考慮した記述にしたいと思っております。 また、行数や表数が増えた場合、どの箇所を修正するのかを併せて教えていただけると助かります。 お手数お掛けいたしますが、よろしくお願い致します。 ================================================================ Sub セルの範囲選択() Set Target = Intersect(Target, Rang("C9:CH9,C11:CH11,C13:CH13,C15:CH15,C17:CH17,C19:CH19,C21:CH21,C23:CH23,C25:CH25,C27:CH27,C37:CH37,C39:CH39,C41:CH41~繰り返す"))   If  処理1   End If End Sub ============================================================

  • 【VBA】セル範囲選択の繰り返し

    下記の通り、1行の間隔でセル範囲を選択したいのですが、選択したい行数が増えた場合を考慮した記述に変更したいと思っております。 よい方法があれば教えていただければ幸いです。 お手数お掛けいたしますが、よろしくお願い致します。 ================================================================ Sub セルの範囲選択() Set Target = Intersect(Target, Rang("C9:CH9,C11:CH11,C13:CH13,C15:CH15,C17:CH17,C19:CH19,C21:CH21,C23:CH23,C25:CH25,C27:CH27"))   If  処理1   End If End Sub ============================================================

  • エクセルのマクロで複数のセルを連続して選択

     マクロ初心者です。添付画像の黄色いセルのように表の一部のセルを選択したいと思っています。画像には表れていないですが、選択する表が下に均等の間隔で100個程度あります。Range("G11:G12").Selectで一番上のセルを選択して下に11行いったところで選択し、その動作を100回くりかえすようなマクロを組みたいです。  どなたかご教授いただければ幸いです。

  • セルの数字を範囲で選択して計算させたいです。

    エクセル2000を使用しています。 CSVファイルを読み込んで、シートに,区切りで開きました。 特定の列の数字を範囲で選択して(複数行)、範囲で選択したセルの数字を1/1000したいです。  特定のセルを範囲で指定するのは、毎回セルの開始行とセルの終了行が変わるためです。また 選択行の上下セルにも文字が入ってきます。 別シートに数式をいれないで、同じセルに計算結果を出すことは可能でしょうか?

  • エクセルでのセル範囲取得

    セルの選択された範囲をVBAで取得する時、選択開始行は「ActiveCell.Row」で取得出来ますが、 選択終了行を取得するプロパティは無いのでしょうか? 「Selection.Cells.Count」を使用して、選択範囲の行数が返って来るのは分かっています。 問題なのはセルの選択順序です。 セルの範囲選択を上から下方向の場合は問題無いのですが、下から上に選択した場合、 選択開始行より下なのか、上なのかが判断出来ません。 そこで、選択範囲の行数ではなく、選択範囲終了の「行位置」が取得できる方法が無いかと色々調べてみましたが、見つけられませんでした。 どなたか御存知でしたら教えて下さい。

  • VBA 選択範囲がセル範囲か列丸ごとか区別

    マクロ起動時のセルの選択範囲により、異なる処理をしようと思ってます。 ・セル1個あるいは縦に複数個選択されている 選択したセルについて処理 ・1列全体が選択されている 1列のデータ入力されているセルのみ対象 なので、起動時に選択されているのがセル範囲なのか1列全体なのか識別する必要があります。 どうすればいいでしょうか?

  • 選択範囲のセルを結合して、値を代入

    画像のような工程表を、作成しております。 4行目のセルを結合して、〇月と表示させたいのですが、可能でしょうか。 5行目の日付は、yyyy/mm/dd で入力しており、表示をddとしております。 この画像ですとG4~AA4、AB4~AW4、AX4~BT4を結合して、5行目の日付から月を参照して、結合したセルに表示させたいです。 4行目の結合範囲は、都度変わるので、選択範囲で結合して、5行目の月を参照させたいのですが、可能でしょうか。

  • Excel2007VBA セル範囲の選択について

    ●質問の主旨 任意に変わる、最終行でデータ入力がされているセルを取得し、 かつそのセルを別のセルと組み合わせて範囲選択するためには どうすれば良いでしょうか? 具体的には1.の記述と同じにするためには,2.の記述を どのように変えたらいいでしょうか?ご存知のかたよろしくお願いします。 1. Range("A3:E50").ClearContents 2. Range("A3:Range("A1").End(xlDown).Offset(0, 4)").ClearContents ●質問の詳細 1. 現在現金出納帳を作成しています。 当月が終わったら次月用として当月用のシートをコピーします。 2. コピーするシートの雛型は同じですが、収支項目、収支金額等は、 一旦クリアします。 3. "A3:E50"は収支項目、収支金額の範囲で、 E50はシートの体裁を合わせるための名目的なセルです。 ※ 現金出納帳なだけにE50の位置は毎月変わります。 収支項目の多い月は月中に行を挿入して、 最終セルがE60やE75になるかもしれません。

  • 【VBA】セルとシート操作の繰り返し処理

    添付画像のような、5行10列からなる1つの表を、2行間隔で作成しています。 VBAを使って、下記のような繰り返し処理をしたいと思っております。 処理1:シート(1)の表に、1行間隔でセルの塗りつぶし色を付ける。 処理2:このシート(1)をコピーして、test(1)~(6)までの6シートを作成する。     ※コピーしたシート名を「test(1)~(6)」に変更する 処理3:コピーしたtest(2)の「B2」「B11」「B20」「B29」「B38」値を「6」~「10」にナンバリングし、     同様にtest(3)~test(6)のB列の番号も「11」~「30」に変更する VBAを使って、添付画像のようなのような処理1~3の繰り返し行うことは可能でしょうか? うまく説明できず申し訳ございませんが、画像を参考にしていただければと思います。 もし可能であれば、その方法を教えてください。 お手数お掛けいたしますが、よろしくお願い致します。

  • 列選択で勝手に広範囲に範囲選択される

    よろしくお願いいたします。 ・使用環境 エクセル2010 表示は[標準]で[ページ レイアウト]は使用していません。 [範囲選択の拡張]は設定していません。 セルの結合とウィンドウ枠の固定の組み合わせで、行を選択した時に勝手に広範囲に範囲選択されます。 例1) A1:D5の表でA1:B1を結合 セル番地B2を選択して[ウィンドウ枠の固定]を設定 ↓ この状態で1行目を選択すると1~14行目が範囲選択されます。 2行目以降は通常通りに選択可能。 (ウィンドウ枠の固定はG10で固定した場合も同様) 例2) A1:D5の表でB1:C1を結合 セル番地B2を選択して[ウィンドウ枠の固定]を設定 ↓ 1行目を選択すると通常通り1行目のみ範囲選択されます。 セルの結合とウィンドウ枠の固定のどちらかのみの設定の場合は、この現象は発生しません。 使用しているの他のブックでは、列選択でも勝手に範囲選択される現象が起きています。 回避策がございましたら、ご教示ください。

専門家に質問してみよう