Excel VBA: Überschneidungsmethode mit mehreren Namensbereichen [closed]

0

Der Schnitt funktioniert nicht.

Dim NTit As Range   Dim NInf As Range   Dim NDat As Range

Dim WS als Arbeitsblatt   Setze WS = ActiveSheet

   Set NTit = WS.Range("$A$1:$J$1")       
   Set NInf = WS.Range("$B$3:$F$3")       
   Set NDat = WS.Range("$A$5:$K$11")       
   NTit.Interior.Color = RGB(255, 0, 0)
   If Not Intersect(Target, NTit, NInf, NDat) Is Nothing Then
Anao
quelle
Nehmen Sie sich eine Minute Zeit, um diese Frage so zu formulieren, dass Sie leichter verstehen, was Sie versuchen und was Ihre Frage ist. Es kann hilfreich sein zu lesen Wie fragen? .
CharlieRB
Wenn ich Change Event normalerweise ausführe, muss der Schnittpunkt den Code überspringen, der folgt, wenn die Eingabedaten außerhalb der Bereiche & Zelle sind. Führen Sie den Code aus, wenn sich die eingegebenen Daten innerhalb der Bereiche befinden, aber in der Tat jedes Mal über den Code springen. Ich weiß, dass jeder Bereich korrekt ist, weil ich dann male, muss es ein Fehler in Ligne in Intersect sein? Danke für deine Hilfe.
Anao

Antworten:

2

Das Intersect funktioniert nicht, da jeder Parameter eine oder mehrere gemeinsame Zellen haben muss. Es ist keine ODER-Situation; es ist ein AND. Sie müssen im Wesentlichen verwenden Target AND (NTit OR NInf OR NDat). Dies kann durch Kombination erreicht werden Intersect mit Union.

If Not Intersect(Target, Union(NTit, NInf, NDat)) Is Nothing Then

Das sieht aus, als könnte es von einem sein Worksheet_Change Ereignismakro. Wenn dies der Fall ist, müssen Sie nicht deklarieren und zuordnen WS. Du könntest es einfach gebrauchen ME als Arbeitsblattobjekt. Es gibt andere Verbesserungen, die ich vorschlagen könnte, aber Sie würden Ihre Frage bearbeiten und mehr Code veröffentlichen, bevor ich sehen konnte, wie dies mit anderen Faktoren zusammenhängt.

Jeeped
quelle
Das ist eine gute Antwort.
Raystafarian