• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VBA】セル範囲選択の繰り返し)

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

このQ&Aのポイント
  • VBAを使用して、セル範囲を繰り返し選択する方法について
  • 行数が増えた場合でも選択したいセル範囲を考慮した記述に変更する方法
  • セルの範囲を選択するVBAマクロのサンプルコードと説明

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

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

No.3です。 投稿後、もう一度質問文を読み返して >選択したい行数が増えた場合を考慮した記述に変更したいと思っております。 の部分を見逃していました。 前回のNo.1のコードの方が対応しやすいと思います。 >For i = 11 To 27 Step 2 の1行を >For i = 11 To Cells(Rows.Count, "C").End(xlUp).Row Step 2 (C列で最終行を取得しています) にすれば行数が増えてもC列最終行まで1行おきに選択されるはずです。 何度も失礼しました。m(_ _)m

HNK1001
質問者

お礼

お礼早々にご回答くださり誠にありがとうございます。 ご教示いただいた内容で希望の結果を得ることができました!

その他の回答 (3)

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

こんばんは! 色々やり方はあるかと思いますが・・・ とりあえず二通りのやり方です。 Sub Sample1() Dim i As Long, myRange As Range Set myRange = Range("C9").Resize(, 84) For i = 11 To 27 Step 2 Set myRange = Union(myRange, Cells(i, "C").Resize(, 84)) Next i myRange.Select End Sub Sub Sample2() Application.ScreenUpdating = False Range("C:C").Insert With Range(Cells(9, "C"), Cells(27, "C")) .Formula = "=IF(MOD(ROW(),2)=1,1,"""")" .Value = .Value End With Range("C8") = "ダミー" Range("C8:CH27").AutoFilter field:=1, Criteria1:=1 Range("C9:CH27").SpecialCells(xlCellTypeVisible).Select ActiveSheet.AutoFilterMode = False Range("C:C").Delete Application.ScreenUpdating = True End Sub Sample1の方が簡単かもしれませんね。m(_ _)m

回答No.2

こんにちは。 もちろん、#1さんのループでつなぐ方法も考えましたが、あえて、選択したい場所を増やす方法として、二種類を考えてみました。 Dim strRng As String Dim myRng As Range Dim myTarget As Range '文字列でつなぐ  strRng = "C9:CH9,C11:CH11,C13:CH13,C15:CH15,C17:CH17," ←注意、行の末尾のカンマ  strRng = strRng & "C19:CH19,C21:CH21,C23:CH23,C25:CH25,C27:CH27" Set myRng = Range(strRng) Set myTarget =Intersect(Target, myRng) このように、文字をつなぐ方法ですが、しかし、文字列の長さには限界があります。 そこで、このように、Unionでつなぐ方法があります。 Dim myRng As Range Dim myTarget As Range Set myRng = Range("C9:CH9,C11:CH11,C13:CH13,C15:CH15,C17:CH17") Set myRng = Union(myRng, Range("C19:CH19,C21:CH21,C23:CH23,C25:CH25,C27:CH27")) Set myTarget =Intersect(Target, myRng) ちなみに、my というプレフィックスは、ローカル変数という意味です。 Target は、システム側で使っていますので、あえて、こう名称を変えます。

HNK1001
質問者

お礼

お礼早々にご回答くださり誠にありがとうございます。 ご教示いただいた内容で希望の結果を得ることができました!

  • yugere
  • ベストアンサー率37% (48/127)
回答No.1

こんにちは。 ============================================================ Sub セルの範囲選択() ' Dim rg as String rg = "C9:CH9" For i = 11 To 27 Step 2 rg = rg & ",C" & i & ":CH" & i Next i Set Target = Intersect(Target, Rang(rg))   If 処理1   End If End Sub ============================================================ でどうでしょうか?

HNK1001
質問者

お礼

お礼早々にご回答くださり誠にありがとうございます。 ご教示いただいた内容で希望の結果を得ることができました!

HNK1001
質問者

補足

ご回答ありがとうございます。 一つ目の範囲と次の範囲の間には、6行の空白があります。なお範囲のサイズは同じ(おなじ形式の表の繰り返し)です。 このような繰り返かが30回ある場合はどのようになりますか? よろしくお願いします!

関連するQ&A