
Excel VBA アクティブセルからある一定のセルまでの範囲選択
Excel2003を使用しています。
アクティブセルからC列に『計』と入力されている行の1行上のD列までを選択状態にするマクロを作成しようとしています。
C列に『計』と入力されている行は下記のように複数あるので、アクティブセルの行以下に入力されている次のC列の『計』の1行上までとしたいのですが、どのようにコードを書いたらいいでしょうか?
例えば…
A2セルをアクティブにしていてマクロを実行するとA2:D3が選択状態に
A7セルをアクティブにしていてマクロを実行すると、A7:D9が選択状態になるように
という具合です。
わかりづらくて申し訳ありませんが、よろしくお願いします。
A B C D
1 日付 № 品名 金額
2 1/1 1 ○○○ 1,000
3 1/2 2 ××× 1,500
4 計 2,500
5
6
7 1/1 5 ○×○ 2,000
8 1/3 6 ××○ 1,200
9 1/4 7 ×○○ 2,500
計 5,700
:
:
No.2ベストアンサー
- 回答日時:
E列にはデータが無い
D列には必ず"計"がある
"計"の有る行のひとつ下の行にはデータが無い
などの条件が揃うなら
With ActiveCell.CurrentRegion
.Resize(.Rows.Count - 1).Select
End With
watabe007 さま
お礼が遅くなり申し訳ありません。
記載していただいたコードにひとつ条件を追加し、CurrentRegion プロパティを使用する方法で、希望通り動作しました。
ご回答ありがとうございました。
No.3
- 回答日時:
こんにちは。
単にユーティリティ範囲に留まります。たぶん、この後で罫線を引きたいというようなことを考えているのではないかと思います。
以下の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 プロパティを使用する方法でいきたいと思います。
ご回答ありがとうございました。
No.1
- 回答日時:
例えば次のようなコードにします。
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勉強中の私にとって、理解しやすかったです。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excelで、activecellから最終列まで選択するvbaはどうすれば?
Excel(エクセル)
-
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
VBAで特定の文字が入力されたセルを選択
Excel(エクセル)
-
-
4
vbaで指定したセルより下の行を指定する方法について vbaの質問です。 例えば、「C6」セルより下
Excel(エクセル)
-
5
エクセル アクティブセルからアクティブセルの行と指定の列を選択するマク
Visual Basic(VBA)
-
6
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
7
”アクティブセル行」の一行下を選択”するマクロ
その他(Microsoft Office)
-
8
VBA データ(特定値)のある最終行を取得したい
Excel(エクセル)
-
9
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
10
【Excel VBA】一番右端セルまでの範囲指定の仕方(途中に空白セルあり)
Visual Basic(VBA)
-
11
VBAで検索して指定の位置に行を挿入したい
Visual Basic(VBA)
-
12
(VBA)アクティブセルを起点に任意のセルを選択する方法
Visual Basic(VBA)
-
13
アクティブになっている行をマクロで削除したい
Excel(エクセル)
-
14
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
15
Excel 条件によって入力禁止にする
Excel(エクセル)
-
16
アクティブセルから、A列最終行までフィルダウン
Excel(エクセル)
-
17
エクセル マクロ 最終列までを全選択
Excel(エクセル)
-
18
VBA 別シートの同じ日付の欄に値を貼付け
Excel(エクセル)
-
19
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
20
VBA 特定のセルからoffsetされたセルの値を変数に代入したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の文字がある行以外を削除...
-
結合されたセルをプルダウンの...
-
Excel VBA アクティブセルから...
-
エクセルVBAのEntireRow.Hidden...
-
excel セルの結合を条件付で自...
-
エクセルVBA 最終行を選んで並...
-
Excelのフィルター後の一番上の...
-
完全一致したら代入するマクロ...
-
【Excel関数】UNIQUE関数で"0"...
-
(VBAにて)列のセルの結合について
-
Excelで、セルの幅をすべ...
-
エクセルのセルに指定画像(.jpg...
-
エクセル2016で時間を入力して...
-
セルではなく行や列、シート全...
-
Excel グラフのプロットからデ...
-
Excel ウインドウ枠の固定をす...
-
エクセル 時間の表示形式AM/PM...
-
Excel2007で、指定範囲の行高さ...
-
”アクティブセル行」の一行下を...
-
エクセル 上下で列幅を変えるには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字がある行以外を削除...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで特定の文字列が入っ...
-
Excelのフィルター後の一番上の...
-
エクセル 上下で列幅を変えるには
-
エクセル マクロ オートフィ...
-
エクセル マクロで数値が変っ...
-
[EXCEL]ボタン押す→時刻が表に...
-
結合されたセルをプルダウンの...
-
Excel グラフのプロットからデ...
-
excelのデータで色つき行の抽出...
-
excel 小さすぎて見えないセル...
-
A1に入力された文字列と同じ文...
-
EXCELで最後の行を固定
-
Excel ウインドウ枠の固定をす...
-
エクセルVBA 最終行を選んで並...
-
VBAで色の付いているセルの行削除
-
連続データが入った行の一番右...
-
エクセル2016で時間を入力して...
-
チェックボックスをクリックし...
おすすめ情報