Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1568to1572
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Intersect (Target,........) Is Nothing Then

Intersect (Target,........) Is Nothing Then
11.07.2017 07:57:48
STeve
Guten Morgen miteinander.
Mich fuchst ein Bereich.
und zwar bei der Sub:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("C2:AG19")) Is Nothing Then
Call .................
End If
End Sub
würde ich gerne einen definierten Bereich anstatt (..., Range("C2:AG19")) einsetzen und zwar den Bereichsnamen
multibereich1_neu
Bei:
If Intersect(Target, multibereich1_neu) Is Nothing Then
kommt hin und wieder ?::
"Laufzeitfehler 1004 - Methode 'intersect' für Objekt '_global' fehlgeschlagen
Bitte um Ansage was ich da falsch mache.
Danke und mfg
STeve

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Range("multibereich")
11.07.2017 08:12:15
Matthias
Hallo
Z.B so

If Not Intersect(Target, Range("multibereich")) Is Nothing Then
MsgBox "Im Bereichdes definioerten Namen"
Else
MsgBox "Nicht im Bereichdes definioerten Namen"
End If
Gruß Matthias
Range - geht mal nicht.....:-(
11.07.2017 09:01:51
STeve
Hallo Matthias.........danke für den Tipp. Bist immer zur Stelle....
....aber bei:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("multibereich1_neu")) Is Nothing Then 'Methode von MatthiasL
Call ............        'im Bereich
Else
Call........             'nicht im Bereich
End If
End Sub
..........kommt die Fehlermeldung:
Laufzeitfehler: 1004 Die Methode 'Range' für das Objekt _Worksheet ist fehlgeschlagen.
mfg STeve
Anzeige
schau meine Datei, dort gehts ...
11.07.2017 09:24:09
Matthias
Hallo

Die Datei https://www.herber.de/bbs/user/114799.xlsm wurde aus Datenschutzgründen gelöscht


Gruß Matthias
kann es an der Union liegen ........
11.07.2017 09:35:05
STeve
Deine Datei läuft.
Frage : kann es an der Union liegen
das heißt der Name multibereich1_neu....scheint im Namensmanager ja nicht auf sondern wird zusammengefasst.
"multibereich1_neu"......also an den ""
mfg
AW: kann es an der Union liegen ........
11.07.2017 09:49:07
Matthias
Hallo
Bin immer noch nicht sicher ob ich Dich verstanden habe.
Versuch mal das:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim multibereich1_neu As Object
Set multibereich1_neu = Union(Range("multibereich1_neu"), Range("namname"))
If Not Intersect(Target, multibereich1_neu) Is Nothing Then
MsgBox "im Bereich"
Else
MsgBox "nicht im Bereich"
End If
End Sub
Gruß Matthias
Anzeige
Habe dir Datei erstellt......lg
11.07.2017 10:22:42
STeve
Hi Matthias.
Hier deine Datei umgeschrieben.
Im Modul 1 werden jetzt
multibereich1_neu (das ist ein name) und der
multibereich2_neu (das ist ein name) zu
multibereichalles_neu (das ist eine union)
zusammengefasst..................
https://www.herber.de/bbs/user/114801.xlsm
Bitte schau dir das mal an......Danke
es funktioniert doch alles ... owT
11.07.2017 10:33:20
Matthias
hab was gefunden ...
11.07.2017 11:39:42
Matthias
Hallo
Hatt dei Auskommentierung nicht gelesen, sorry.
Was mir aufgefallen ist:
If InStr(namName.RefersTo, ActiveSheet.Name) > 0 And Left(namName.Name, 4) = "multi" Then
multi sind aber 5 Zeichen
So kommst Du also überhaupt nicht zu den inneren If-Abfragen.
Hab jetzt aber keine Zeit mehr.
Gruß Matthias
Anzeige
hier nochmal die Datei......lg
11.07.2017 14:51:41
STeve
Hallo Matthias.
Hatte in der Muster-Datei zwei Fehler.....Jetzt behoben.
Siehe bitte datei:
https://www.herber.de/bbs/user/114810.xlsm
Die zwei - mit Namensmanager definierten - Bereiche werden mit dem Modul1 zu der Union multibereichalles_neu (diese Union scheint aber nicht im Namensmanager auf) zusammengefasst.
Wenn du jetzt in Bereich 1 oder 2 klickst funktioniert es wunderbar:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, multibereichalles_neu) Is Nothing Then
MsgBox "im Bereich"
Else
MsgBox "nicht im Bereich"
End If
End Sub
...........aber nicht in meiner Datei.....kann das etwas mit dem zutun haben, dass in der hier eingestellten Musterdatei nur ein Blatt ist und in meiner mehrere Blätter?
Danke für deine weitere Hilfe und Tipps.
lg STeve
Anzeige
AW: Intersect (Target,........) Is Nothing Then
11.07.2017 08:13:41
Luschi
Hallo STeve,
das funktioniert so:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Intersect([multibereich1_neu], Target) Is Nothing) Then
MsgBox Target.Address
End If
If Not (Intersect(ThisWorkbook.Names("multibereich1_neu").RefersToRange, Target) Is Nothing) _
Then
MsgBox Target.Address
End If
End Sub
Mit freundlichem Gruß
Luschi
aus klein-Paris
Ereignis ?
11.07.2017 09:04:05
STeve
Guten Morgen Luschi.......danke für deine Antwort.
Frage:
Wieso hier das
Private Sub Worksheet_Change(ByVal Target As Range)
Ereignis?
mfg
zusätzliche Info für euch.......
11.07.2017 09:25:15
STeve
multibereich1_neu ist ein Union Bereich.
Set multibereich1_neu = Union(multibereich1_neu, namName.RefersToRange)
Luschi:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Intersect([multibereich1_neu], Target) Is Nothing) Then 'geht nicht
oder
If Not (Intersect(ThisWorkbook.Names("multibereich1_neu").RefersToRange, Target) Is Nothing)Then'geht auch nicht
mfg
STeve
Anzeige
wieder auf offen.....Union soll bestehen bleiben
11.07.2017 17:42:12
STeve
Möchte nochmal auf offen stellen und folgende Frage/Bitte:
Siehe bitte datei:
https://www.herber.de/bbs/user/114810.xlsm
Die zwei - mit Namensmanager definierten - Bereiche (multibereich1_neu und multibereich2_neu) werden mit dem Modul1 zu der Union multibereichalles_neu (diese Union scheint aber nicht im Namensmanager auf) zusammengefasst.
Wenn du jetzt in Bereich 1 oder 2 klickst funktioniert es wunderbar:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, multibereichalles_neu) Is Nothing Then
MsgBox "im Bereich"
Else
MsgBox "nicht im Bereich"
End If
End Sub
Es wird erkannt dass die beiden Bereiche eine Union sind. Wenn ich die Datei aber schließe und wieder öffne muss wieder das Modul1 neu gestartet werden dass die Union besteht.
Bitte um Lösung wie die Unionzusammenführung nicht bei jeder Öffnung neu gemacht werden muss?
Danke für eure weitere Hilfe und Tipps.
lg STeve
Anzeige
AW: wieder auf offen.....Union soll bestehen bleiben
11.07.2017 18:22:08
Luschi
Hallo STeve,
hier alle 3 schon mal vorgestellten Varianten mit den richtig geschriebenen definierten Namen:

Die Datei https://www.herber.de/bbs/user/114818.xlsm wurde aus Datenschutzgründen gelöscht


Gruß von Luschi
aus klein-Paris
AW: wieder auf offen.....Union soll bestehen bleiben
11.07.2017 21:08:28
STeve
Hallo sehr geehrter Luschi.......deine drei Varianten laufen perfekt ..so sollte es sein.
Ich habe ja nicht nur die zwei multi1 und 2 bereiche sondern bis zu 60, die immer verschieden heißen und mit langen komplizierten Namen definiert werden.
Aber schau mal hier: (habe in deine Datei nur mal 20 multi- bereiche erstellt und per def. Namen vergeben)

Die Datei https://www.herber.de/bbs/user/114822.xlsm wurde aus Datenschutzgründen gelöscht


Deshalb habe ich im Modul1 die:

Sub zusammenfassung()
End Sub eingebaut (von Beverly) diese fasst die ganzen namen per Schleife zusammen------ eben zu dem multibereichalles_neu
Deine Varianten kann ich leider nicht umsetzen.
Ich müsste
1.) die Namen wissen
2.) die Anzahl wissen
3.) deine Codes so ausarbeiten:
Intersect(Target, Union([multi1], [multi2], [multi3], [multi4], [multi5], [multi6], [multi7] _
[multi8], [multi9], [multi10], [multi11], [multi12], [multi13], [multi14]......
.................usw bis 60 und alles immer verschiedene und lange komplizierte Namen))
Das heißt: die ganzen Bereiche werden bei Erstellung des Blattes zusammengefasst und dann soll der in einen Begriff (multibereichalles_neu) erhalten bleiben.
Besten Dank für deine Hilfe
mfg
STeve
Anzeige
AW: wieder auf offen.....Union soll bestehen bleiben
12.07.2017 08:01:49
Luschi
Hallo STeve,
hier die angepaßte Version auf Grundlage von Beverlys Zusammenfassungs-Sub.
https://www.herber.de/bbs/user/114824.xlsm
Gruß von Luschi
aus klein-Paris
Luschi aus Klein Paris............gewaltig
12.07.2017 08:18:34
STeve
Guten Morgen lieber Luschi aus Klein Paris..........einfach gewaltig. DANKE das ist es.
Da bin ich jetzt mal eine Woche aufgeräumt :-) diese Funktion in meine Datei einzuarbeiten.
Ich hoffe es gelingt mir ansonsten hoffe ich darf mich speziell an dich wenden bevor ich "kolabiere"
Danke für deine Mühen...wünsche einen schönen Tag.
LG STeve
Anzeige
Luschi brauche noch deine Hilfe......lg
12.07.2017 15:25:19
STeve
Hi Luschi.........komme nicht weiter.
Siehe hier:
'alle Namen mit gleichem Namensanfang zusammenfassen in einem Range-Bereich
Function ZusFsgNamen(xWelcheTab As Worksheet, xWelcheNamen As String) As Range
Dim namName As Name, i As Integer
i = Len(xWelcheNamen)
For Each namName In ActiveWorkbook.Names
Debug.Print InStr(Replace(namName.RefersTo, "'", ""), ActiveSheet.Name & "!") 'es zeigt  _
richtig den Wert 2 an
Debug.Print LCase(Left(namName.Name, i))  ' es zeigt auch den richtigen String Wert an
' wenn der Bezug den Namen des aktiven Tabellenblattes enthält
If InStr(Replace(namName.RefersTo, "'", ""), ActiveSheet.Name & "!") > 0 And _
LCase(Left(namName.Name, i)) = xWelcheNamen Then
'''''''''''# hier kommt er aber nie rein.......weiß du was da los ist?
' Variable ist noch leer
If multibereich1_neu Is Nothing Then
' der Variablen den Bezugsbereich des laufenden Namen zuweisen
Set multibereich1_neu = namName.RefersToRange
' Variable ist schon gefüllt
Else
' die Variable um den Bezugsbereich des laufenden Namen erweitern
Set multibereich1_neu = Union(multibereich1_neu, namName.RefersToRange)
End If
End If
Next namName
Set ZusFsgNamen = multibereich1_neu
End Function

mfg STeve..........der bald verzweifelt
Anzeige
Danke Luschi.........habe Fehler gefunden
12.07.2017 16:37:22
STeve
Hallo Luschi.......hat sich erledigt...bin schon weitergekommen.
LCase.....war der Übeltäter.....
LCase(Left(namName.Name, i)) = xWelcheNamen Then
Danke und mfg
STeve

15 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige