dポイントプレゼントキャンペーン実施中!

シートからいくつかのセルがアクティブ状態になっています。
そこから、セルを一つずつ指定してアクティブになっているかどうかを判断したいのです
がそのような事は可能でしょうか?
ご存知でしたら、ご教授ください。

For I = 1 To wsABC.Range("XXXXXX").Rows.Count
If wsABC.Range("XXXXX").Selected(I) = True Then
              ~~~~~~~~~~~~
                ↑
              気持ち的にはこのような指定がしたい。
              (実際はSelectedプロパティはない。。)

A 回答 (4件)

選択したセルが、一定の範囲内にあるか知りたいって事かな?



例えば一定の範囲を A1:A10として、A1:B15 を選択してから実行すると A1~A10 をMsg表示する

Sub Test()
Dim r As Range, s As String
If TypeName(Selection) <> "Range" Then Exit Sub
 For Each r In Selection
  If Not Application.Intersect _
   (r, ActiveSheet.Range("A1:A10")) Is Nothing Then
    s = s & r.Address & vbCrLf
  End If
 Next r
MsgBox s
End Sub

もっと具体的に何をしたいかが解かれば、他の良案があるかも。
    • good
    • 0
この回答へのお礼

ありがとうございました。
SelectionとIntersectで実現できました。
初心者なもんでIntersectがあるなんて想像もつきませんでした^^;

ちなみに作成したのはこんな感じ
For I = 1 To wsABC.Range("XXXXXX").Rows.Count
If Not Application.Intersect(wsABC.Range("XXXX").Cells(I, 1), Selection) Is Nothing Then


多謝

お礼日時:2004/06/01 10:27

例えば、いまG8に注目したとします。


範囲指定して、G8を含む範囲を指定して下記を実行しますと、「範囲に含まれる」、範囲に隣接していたり、飛び離れていれば、「範囲と別」を表示します。
Sub test01()
Set x = Selection
Set y = Range("E8")
Set z = Union(x, y)
w = z.Areas.Count
MsgBox w
If w = 1 Then
MsgBox "範囲に含まれる"
Else
MsgBox "範囲と別"
End If
End Sub
検討不十分ですが、参考までに上げます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

シンプルでわかりやすいです。

お礼日時:2004/06/01 10:45

ご質問を整理してください。



選択範囲が複数あっても、アクティブセルは一つしかなく、ActiveCell.addressで求めることができますが、もしかしてselectedかどうか判別したい、ということですか?

この回答への補足

すいません。アクティブ状態と選択状態を
掛け違えておりました。
Selected(選択状態)かどうかを判別したいと考えています。

また、アクティブセルかどうかを判別する場合は、ご回答にあるように
ActiveCell.addressを使用すれば出来るとのことですが、
指定したセル(Range("ABC").Cell(X,X))がアクティブかどうか
調べる時は

if Range("ABC").Cell(X,X).Address=ActiveCell.address then

といような使い方が一般的でしょうか?

補足日時:2004/05/31 18:11
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2004/06/01 10:46

こんにちは。

maruru01です。

アクティブ状態ではなくて、選択状態ですね。
アクティブなセルはアクティブなシートを1つしかありませんから。
さて、ある列を順に調べるのではなくて、選択範囲(Selection)で、その列に該当するかどうかを調べてはどうでしょうか?
以下は、選択範囲で列番号が「1」(つまりA列)の場合に処理をするというコードです。


Dim rg As Range

For Each rg In Selection
  If rg.Column = 1 Then
    '(処理)
  End If
Next rg
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

すいません。僕の説明不足でした。

お礼日時:2004/06/01 10:48

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

このQ&Aを見た人はこんなQ&Aも見ています