質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

1017閲覧

VBAでまとめてセル選択ができない

Royboon

総合スコア17

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/01/24 15:01

VBAでまとめてセル選択ができない

上でCtrl+Shift+矢印キーを入力すると,連続したセルの終端まで選択できる.
しかし,この操作を「マクロの記録」し,実行したところ,まとめてセル選択ができなかった.

発生している現象

下図の状態から下記の操作のマクロの記録を実施する.

  1. A1セルを選択
  2. Ctrl+Shift+下矢印キーでA1:A2を選択
  3. Ctrl+B1セルをクリックでA1:A2,B1を選択
  4. Ctrl+Shift+下矢印キーでA1:A2,B1:B2を選択

イメージ説明

自動生成されたマクロは以下のようになる.

Sub Macro1() ' ' Macro1 Macro ' ' Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Range("A1:A2,B1").Select Range("B1").Activate Range(Selection, Selection.End(xlDown)).Select End Sub

上記のマクロを実行すると,下図の状態になる.
A1:A2,B1:B2の選択を行いたいが,A1:A2のみしか選択されない.

イメージ説明

質問

VBAを用いて,あるセルが選択がSelectされている状態で,追加でセル選択する方法を教えていただきたいです.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

イメージ説明
ではなく、
イメージ説明
というような状態を再現したいということでしょうか。

Unionは隣接した矩形範囲はひとつのAreaになってしまうようで、

vba

1 Union(Range("B1:B2"), Range("A1:B2")).Select

では、前の図のようになってしまいます。

vba

1 Range("B1:B2,A1:B2").Select

で、後の図の状態を再現できます。

目的は、Areasを使いたいということでしょうか。

追記

投稿したら解決済みになっていた。
Unionでよかったのね。

投稿2020/01/24 16:45

編集2020/01/24 16:48
hatena19

総合スコア33759

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

マクロの記録は、プログラムを作るツールではありません。
チョー便利なヘルプ機能です。
一つ一つの動作とどんなコードが対応してるのかを理解してから
自分でコードを作っていきましょう。

VBA

1Sub Macro1() 2' 3' Macro1 Macro 4' 5 6' 7 Range("A1").Activate 8 Range(Selection, ActiveCell.End(xlDown)).Select 9 Range("A1:A2,B1").Select 10 Range("B1").Activate 11 Range(Selection, ActiveCell.End(xlDown)).Select 12End Sub 13

条件の後出しですか。

VBA

1Sub Macro2() 2' 3' Macro2 Macro 4' 5 6' 7 Range("A1").Activate 8 Range(ActiveCell, ActiveCell.End(xlDown)).Select 9 Range("A1:A3,C1").Select 10 Range("C1").Activate 11 Union(Selection, Range(ActiveCell, ActiveCell.End(xlDown))).Select 12End Sub 13

投稿2020/01/24 15:20

編集2020/01/24 15:52
iruyas

総合スコア1067

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Royboon

2020/01/24 15:33

ご回答ありがとうございます。 上記のご回答は,A1:A2,B1:B2の選択ではなく,A1:B2の選択ではないでしょうか. 例えば,A1:A3,C1:C3のように,離れたところの選択に対応しておりません. 引き続きよろしくお願いいたします.
Royboon

2020/01/24 16:26

ご回答いただきありがとうございました.
guest

0

3のパターンを再現するのは無理ですが、
行と列単位で選択範囲を拡張するRange.Resizeプロパティという物があります。

VBA

1Range("A1").Select 2Selection.Resize(Selection.Rows.Count + 1).Select 3Selection.Resize(, Selection.Columns.Count + 1).Select

これでA1を選択してから、A1:A2に拡張。
A1:A2からA1:B2の再現は可能です。

追記
失礼しました。選択範囲を追加するApplication.Unionと言う物もあります。
こちらだと要望の動作ができると思います。

VBA

1Range("A1").Select 2Application.Union(Selection, Range("A2")).Select 3Application.Union(Selection, Range("B1")).Select 4Application.Union(Selection, Range("C4")).Select

このコードはA1、A2、B1まで選択して、次に離れたC4を選択した物です。

投稿2020/01/24 15:13

編集2020/01/24 15:24
yureighost

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Royboon

2020/01/24 15:17

貴重なご意見ありがとうございました. ただ,今回実現したい操作は任意の離れたセルの選択です. またお気づきの点がございましたらよろしくお願いいたします.
Royboon

2020/01/24 16:26

ご回答いただきありがとうございました. Unionメソッドを使うとのこと,勉強になりました. また今後機会がありましたらよろしくお願いいたします.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問