- ベストアンサー
Excel VBAでアクティブセルから特定の範囲を選択する方法
- Excel VBAを使用して、アクティブセルから特定のセルまでの範囲を選択する方法について教えてください。具体的には、アクティブセルからC列に『計』と入力されている行の1行上のD列までを選択するマクロを作成したいと思っています。
- C列に『計』と入力されている行は複数あり、アクティブセルの行以下に入力されている次のC列の『計』の1行上までを選択したいです。例えば、A2セルをアクティブにしてマクロを実行するとA2からD3までが選択されるようにしたいです。
- 具体的なコードの書き方について分かりづらいですが、ご教示いただければと思います。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
E列にはデータが無い D列には必ず"計"がある "計"の有る行のひとつ下の行にはデータが無い などの条件が揃うなら With ActiveCell.CurrentRegion .Resize(.Rows.Count - 1).Select End With
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 単にユーティリティ範囲に留まります。たぶん、この後で罫線を引きたいというようなことを考えているのではないかと思います。 以下のTest1 マクロで、ActiveCell は、データのある範囲なら、どこでも良いです。 なお、Cells(1).Text ここは、.Value では判定できません。 '------------------------------------------- Sub Test1() Dim i As Long Dim j As Long With ActiveCell.CurrentRegion If ActiveCell.Value = "" Then Exit Sub 'タイトルがある場合 If IsDate(.Cells(1).Text) = False Then i = 1 End If '範囲の最後の手前に'計'という文字があるか判定 If .Cells(.Cells.Count).Offset(, -1).Value Like "*計*" Then j = -1 End If ActiveSheet.Range(.Cells(1).Offset(i), .Cells(.Count).Offset(j)).Select End With End Sub '-------------------------------------------
お礼
Wendy02 さま お礼が遅くなり申し訳ありません。 マクロ実行後は選択された範囲内で並べ替えをしたく、“計”までのデータ(行)が多くなるときもあることから、アクティブセル以下、“計”の1行上までの範囲を自動的に選択できればと思い、質問させていただいた次第です。 今回は記載していただいたように、CurrentRegion プロパティを使用する方法でいきたいと思います。 ご回答ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えば次のようなコードにします。 Sub 範囲選択() Dim RowP As Integer Dim rp As Integer RowP = ActiveCell.Row rp = WorksheetFunction.Match("計", Range(Range("C" & RowP), Range("C1000")), 0) + RowP Range(Range("A" & RowP), Range("D" & rp - 2)).Select End Sub
お礼
KURUMITO さま お礼が遅くなり申し訳ありません。 質問文をそのまま記述したようなコードで、VBA勉強中の私にとって、理解しやすかったです。 ご回答ありがとうございました。
お礼
watabe007 さま お礼が遅くなり申し訳ありません。 記載していただいたコードにひとつ条件を追加し、CurrentRegion プロパティを使用する方法で、希望通り動作しました。 ご回答ありがとうございました。