プロが教える店舗&オフィスのセキュリティ対策術

こんばんわ。
エクセルのシート上であるデータをコントロールキーを押しながら選択します。
そのデータを処理するときに、RowのAに必須データが入っているのですが、もし、RowのAを選択していなかったら、マクロ側でAのデータをSelectionに加えたいのです、、、
説明がへたくそですでゴメンナサイ。
Selection.Areasに、マクロ側でエリアを追加する事などできるでしょうか??
よろしくお願いします。

A 回答 (4件)

april21さんのadressを検索するのはいいアイデアですね。


#2でチェックはFor Each ・・・でと書きましたが必須範囲を含む範囲を選択した場合、うまくいかないと思い、別の方法を考えました。
下は必須範囲を含む範囲を選択した場合は「選択した」ことにしています。
intersectで選択部分と必須部分との共通部分を調べています。選択部分が完全に必須部分を含む場合は「選択」としています。

Public Sub AreaCheck2()
Dim rgHissuArea As Range '必須エリア
Dim rgSentakuArea As Range '選択エリア
Dim rgKyotuu As Range '共通部分

Set rgHissuArea = Range("A1:B2") '***必須データエリアをセット***
Set rgSentakuArea = ActiveWindow.RangeSelection

'intersectメソッドで共通部分を調べる
Set rgKyotuu = Application.Intersect(rgSentakuArea, rgHissuArea)
If rgKyotuu Is Nothing Then
'共通部分がない場合
MsgBox "必須エリア:" & rgHissuArea.Address & "は未選択です。"
rgSentakuArea.Select
Exit Sub
Else
'共通部分がある場合
If rgKyotuu.Address = rgHissuArea.Address Then
'必須エリアが完全に含まれている
MsgBox "必須エリア:" & rgHissuArea.Address & "は選択されています。"
rgSentakuArea.Select
Exit Sub
Else
'必須エリアが完全に含まれていない
MsgBox "必須エリア:" & rgHissuArea.Address & "は未選択です。"
rgSentakuArea.Select
End If
End If
End Sub
    • good
    • 0

みなさんが回答されてるのでもういいかなって思ったのですが


選択のチェックも入れてたので・・・。

Aが何を示すものか良くわからなかったので$A$1にしてます。
適当に変更してください。
↓のマクロはA1が選択されてない場合A1を追加します。
-----------------------------------------------------------------
Sub sentaku()
Dim sentaku As String
sentaku = Selection.Address
If InStr(1, sentaku, "$A$1", 1) = 0 Then sentaku = sentaku + ",$A$1"
Range(sentaku).Select
End Sub
------------------------------------------------------------------
    • good
    • 0

moon_pocoさんの式で範囲Aの選択を必須とした複数範囲が選択できると思います。


また、Unionメソッドは和集合を返すと思いますので、範囲Aの選択をチェックしなくても望む答えは得られると思います。
チェックが必要であれば・・・For Each で調べればいいと思います。

下記で動作を確認できると思います

Public Sub Sentaku()
Dim rgHissuArea As Range '必須エリア
Dim rgSentakuArea As Range '選択エリア
Dim rgMultiArea As Range '結合エリア

Set rgHissuArea = Range("A1:B2") '必須データエリアをセット
Set rgSentakuArea = ActiveWindow.RangeSelection
'rgMultiAreaは和集合になる
Set rgMultiArea = Union(rgHissuArea, rgSentakuArea)
rgMultiArea.Select
End Sub
    • good
    • 0

これではどうでしょうか



Union(Selection, Columns("A")).Select


RowのAを選択しているか,どうかをチェックするのは
すいません,わかりませんでした。
    • good
    • 0

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