私が最初に計画していたのは、どれ程の範囲がわかるまで、すべての範囲でこれを繰り返すことでした。選択が名前付き範囲と交差する場合は、その名前付き範囲を選択します。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(ActiveCell, Range("M_1")) Is Nothing Then
Else
Range("M_1").Select
End If
End Sub
私が最初に計画していたのは、どれ程の範囲がわかるまで、すべての範囲でこれを繰り返すことでした。選択が名前付き範囲と交差する場合は、その名前付き範囲を選択します。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(ActiveCell, Range("M_1")) Is Nothing Then
Else
Range("M_1").Select
End If
End Sub
まず、activecell
target
以来target
には、呼び出し元の範囲として、静的であることを変更したいと思います。また、ちょうどので、あなたは、あなたがtarget
は、名前付き範囲の少なくとも一つを交差するかどうかを確認するために名前付き範囲のリストに対してtarget
をテストしたい場合はELSE
を使用する必要はありませんあなたのIF
にあなたをNOT
条件を追加にループを追加
doIntersect = false
rngCounter = 0
For each strTestRange in Array("M_1", "M_2", "M_3")
If Not Intersect(Target, Range(strTestRange) Is Nothing Then
doIntersect = true
rngCounter = rngCounter + 1
End if
Next strTestRange
If doIntersect Then
msgbox(rngCounter & " named ranges intersect your selection")
Else
msgbox("None of the named ranges intersected your selection")
End if
私が理解しているかわからない、私はM_1からM_1260まで1260の名前付き範囲を持っていますが、あなたはそれをどのように書くのですか? – mrkrister
上記のScottの答えをご覧ください。そこでは、彼はシート内のすべての名前付き範囲をループします。このループの中で、 'if left(nm.name、2)=" M_ "Then'のようなテストを追加することができます。 'For i = 1〜1260'、' Range( "M_&i).DoSomething'この猫をスキンするにはたくさんの方法があります。 – JNevill
これはしばらく経っていますが、私は自分のコードの仕組みを理解していると思います。間違っていれば修正しますが、選択したセルと交差するかどうかを調べるために、そうした名前付き範囲を1つ選択します。私はすべての名前付き範囲で動作するので、私はそれの中で追加のテストを実行する必要があるとは思わないので、私は基本的にコードをコピーし、ランタイムエラーで私に残しました。オブジェクト '_Woorksheet'これは私に多くの他のものを学ばせましたが、悲しいことにこの権利を得る方法はありません – mrkrister
:
If Not Intersect(Target, Union(Range("M_1"), Range("M_2"), Range("M_3")) Is Nothing Then
あなたはより多くの制御が必要な場合は、ループを行うことができます。アプリケーションのunion
メソッドを使用することができます名前付き範囲を反復処理:名前付き範囲を超える
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim nm As Name
Dim nmStr As String
For Each nm In ThisWorkbook.Names
nmStr = nm.Name
If Not Intersect(Target, Range(nmStr)) Is Nothing Then
Application.EnableEvents = False
Range(nmStr).Select
Application.EnableEvents = True
End If
Next nm
End Sub
私は何が間違っているのか分かりませんが、これを動作させることはできません – mrkrister
だけループを**そのシートの編集のための** –
@JNevillの感謝を:) – mrkrister
ゲイリーの学生@ – mrkrister