
マクロで行削除ボタンを作成し、アクティブセルの行を削除(消去)するように
しています。
コマンド自体が単一行での動作を想定しているため、ifでの分岐で複数行の場合はexitを用いて
動作を停止したいと考えています。
例
A1セルのみの選択→OK
A1からB1までの選択→OK
A1からA3までの範囲→停止
A1からC3までの範囲→停止
といったような考えです。
ネット上で調べますと、複数範囲という事例はありましたが、当方の動きとは異なる
内容です。
複数行を選択している場合の確認方法はありますでしょうか?
No.1ベストアンサー
- 回答日時:
こんばんは
行の個数を数えれば良いかと思います
If Selection.Rows.Count > 1 Then Exit Sub
とか
If Target.Rows.Count > 1 Then Exit Sub
とか・・
No.2
- 回答日時:
こんばんは
>アクティブセルの行を削除(消去)するようにしています。
アクティブセルが対象であれば、基本的に1セルだけなので、チェックの必要は無いと思いますが・・
>複数行を選択している場合の確認方法はありますでしょうか?
確実なのは、選択範囲のセルの行(=Row属性)が全部同じかを調べれば良いのでしょうけれど、若干面倒な気もしますので、
Intersect(Selection.Cells(1).EntireRow, Selection).Cells.Count = Selection.Cells.Count
なんてのでも判定できると思います。
※ Selection が Range であるという前提です。
※ Range であることを、事前にチェックしておく必要があると思います。
※ 上記はセルの個数で判定していますので、特殊な選択(同じセルを2度含む範囲で重複選択するなど)方法で選択している場合には正しく判定できませんけれど。
その他にも様々な複数セルの選択方法がありますが、セルの重複が無ければ正しく判断できます。
普通に素直に1つの範囲だけの選択を想定すれば良いだけなら、No1様の
Selection.Rows.Count > 1
が、一番簡単でしょう。
複雑な選択方法にも確実に対応するなら、
check = True
For Each c In Selection
If c.Row <> Selection.Cells(1).Row Then check = False: Exit For
Next c
MsgBox check
のような感じでチェックを行えば、判定できるでしょう。
回答ありがとうございました。
No.1様の回答が早かったので、そちらをベストアンサーにさせて
いただきました。
今回は複雑な条件はありませんでしたが、今後の参考と
させていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) マクロ セルの選択 5 2022/08/12 22:47
- Visual Basic(VBA) RemoveDuplicatesメソッドについて教えてください。 シート1にシート2から値をもってく 1 2023/02/28 22:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) VBAマクロ 決まっていない行を選択して別シートへ貼付け 4 2023/02/16 16:08
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
このQ&Aを見た人はこんなQ&Aも見ています
-
複数の選択範囲の行番号を個別に取得する方法
Visual Basic(VBA)
-
VBA 選択された離れたセルの値の取得について
Excel(エクセル)
-
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
-
-
4
Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる
Visual Basic(VBA)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
cellsで特定の離れた範囲を選択する方法は?
Visual Basic(VBA)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
9
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
10
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
11
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
12
連続する複数のセル値がすべて0であることを判定するマクロ
Visual Basic(VBA)
-
13
エクセル VBAで複数セル選択時エラーになる問題
Visual Basic(VBA)
-
14
エクセルVBAのIF文の否定の複数条件
Excel(エクセル)
-
15
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
16
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
17
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
18
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
19
Excelの入力規則で2列表示したい
Excel(エクセル)
-
20
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで連続データから、数...
-
excelで、スクロールをすると限...
-
エクセルの画面で十字マークが...
-
複数のセルの入力内容を一度に...
-
EXCEL アルファベットと数字の...
-
セルをクリックすると付箋のよ...
-
Excel 小さくなったスクロール...
-
エクセルで任意のセルをクリッ...
-
エクセル 画面上の行数を調節...
-
ピポットテーブルエラー解決方法
-
excelで1行ごとに一気に削除す...
-
Excelで表のデータを並び替えた...
-
エクセル 空白を0に
-
エクセルでハイパーリンクのU...
-
セルを斜めに選択してカットする
-
エクセル 数値を全て「1」にす...
-
余計なお世話的な「入力規則」...
-
エクセルVBA 複数行にまたがっ...
-
エクセルで、結合したセルを選...
-
組み合わせパターンについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelで、スクロールをすると限...
-
エクセルで連続データから、数...
-
EXCEL アルファベットと数字の...
-
複数のセルの入力内容を一度に...
-
エクセルの画面で十字マークが...
-
Excel 小さくなったスクロール...
-
セルをクリックすると付箋のよ...
-
エクセル 画面上の行数を調節...
-
エクセル 数値を全て「1」にす...
-
エクセルでハイパーリンクのU...
-
excelで1行ごとに一気に削除す...
-
エクセルで、結合したセルを選...
-
Excelで表のデータを並び替えた...
-
エクセルで任意のセルをクリッ...
-
エクセルVBA 複数行にまたがっ...
-
エクセルでカーソルが四方に矢...
-
エクセルで0を除いて昇順に並...
-
Excel選択を繰り返すとセルの色...
-
ピポットテーブルエラー解決方法
-
エクセルで1つおきに列を削除...
おすすめ情報