ここから本文です

vbaで指定範囲内に 選択範囲があるかどうかを知りたい。

ao2********さん

2010/11/2414:13:15

vbaで指定範囲内に
選択範囲があるかどうかを知りたい。

vbaで、指定範囲内に
選択範囲があるかどうかを知りたいのですが、
良い方法があれば教えてください。

選択範囲が完全に指定範囲内にあるかどうかが知りたいです。

例)
・指定範囲(A1~D10)
・選択範囲(B1~E12)

・指定範囲外に選択範囲がある。

よろしくお願いいたします。

閲覧数:
1,313
回答数:
3
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

riv********さん

2010/11/2414:44:14

intersectメソッドで共有部分を抜き出してアドレスを比較して同じなら選択範囲内
Sub dd()
Dim rg As Range
Dim selrg As Range
Set selrg = Selection
Set rg = Application.Intersect(Range("a1:d10"), selrg)
If rg Is Nothing Then
MsgBox "範囲外"
Else
If rg.Address = selrg.Address Then
MsgBox "範囲内"
Else
MsgBox "範囲外"
End If
End If
End Sub

質問した人からのコメント

2010/11/25 11:56:07

降参 皆さんありがとうございました。
選択範囲全てが指定範囲にある場合と、一部の場合を分けた方法を教えてくださったrivoisuさんをベストアンサーに選ばせていただきました。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

fum********さん

2010/11/2417:46:25

「SubsetがSupersetに含まれている」という述語を表す関数です。
Function IsSubsetRange(Subset As Range, Superset As Range) As Boolean
Dim c As Range
Set c = Application.Intersect(Subset, Superset)
If c Is Nothing Then '共通部分がない場合
IsSubsetRange = False
ElseIf c.Address = Subset.Address Then '共通部分がSubsetと同値な場合
IsSubsetRange = True
Else 'それ以外
IsSubsetRange = False
End If
End Function
IsSubsetRange(Selection,Range("指定範囲"))が「選択範囲が完全に指定範囲内にあるかどうか」の結果となります。

hig********さん

2010/11/2417:10:27

こんにちわ ao2009hoさん

選択範囲のセルを一つずつ指定範囲と比較する方法
Sub test()
Dim rng
For Each rng In Selection
If Intersect(Range("b2:f12"), rng) Is Nothing Then
MsgBox "指定範囲外"
Exit Sub
End If
Next
MsgBox "指定範囲内"
End Sub

参考まで

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる