おすすめのモーニング・朝食メニューを教えて!

マクロで条件に合った行の選択について

例えばA列から条件に合ったデータを探すとき、
条件の行が複数、点在しておりそれらをすべて選択した状態にする
(Ctrlキーとクリックでそれらの行を選択した状態)
というようなものができますでしょうか?

エクセルの機能のフィルタを使えば抽出が可能なのは存じておりますが
マクロとして記述する時、可能か否かお聞かせください。

宜しくお願いします。

「マクロで条件に合った行の選択について」の質問画像

A 回答 (2件)

No1 merlionXXです。


試してみたら抽出数が少ない場合はOKでしたが何十個もあるとエラーになりました。
よく考えてみたらRange()に文字数の制限があるることをすっかり忘れていました。
Unionを使うことで解決しました。
修正版です。

Sub test02()
  Dim myAr()
  Dim i As Long
  Dim c As Range, Rng As Range
  With ActiveSheet
    For Each c In Intersect(.Range("A:A"), .UsedRange)
      c.Select
      If c <> "" And c.Value Mod 2 = 0 Then
        ReDim Preserve myAr(i)
        myAr(i) = c.Address(0, 0)
        i = i + 1
      End If
    Next
    For i = LBound(myAr) To UBound(myAr)
      If Rng Is Nothing Then
        Set Rng = .Range(myAr(i))
      Else
        Set Rng = Union(Rng, .Range(myAr(i)))
      End If
    Next i
    Rng.EntireRow.Select
  End With
End Sub
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

このような方法があるのですね。実際に私も動作を確認でき、
勉強になりました。

感謝いたします。ありがとうございました。

お礼日時:2010/10/11 15:15

できますよ。


条件が分からないので、とりあえずA列が偶数のセルである行をすべて選択してみました。

Sub test()
  Dim myAr()
  Dim i As Long
  Dim c As Range
  With ActiveSheet
    For Each c In Intersect(.Range("A:A"), .UsedRange)
      If c <> "" And c.Value Mod 2 = 0 Then
        ReDim Preserve myAr(i)
        myAr(i) = c.Address
        i = i + 1
      End If
    Next
    .Range(Join(myAr, ",")).EntireRow.Select
  End With
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報