Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1320to1324
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
Ordner aus Zelle ansprechen
17.07.2013 12:14:49
Hartmut
hallo zusammen,
wenn ich folgenden code ausführe kommt immer der Ausdruck Fehler beim Kompilieren.
Fehlt nicht hinter 'Is nothing then' noch ein Befehl?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("A2:A7")
If Not Intersect(Target, Bereich) Is Nothing Then ' Zelle ist im Bereich
Application.Dialogs(xlDialogOpen).Show "\users\document\zusatzarbeiten\"
End If
End Sub

Wie immer ein großes DANKE für eure Hilfe.
Gruß
Hartmut

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordner aus Zelle ansprechen
17.07.2013 12:18:30
Hajo_Zi
Hallo Harmut,
hast Du vielleicht die Argumente vertauscht?
Ich schreibbe immer
Set RaBereich = Intersect(RaBereich, Range(Target.Address))

AW: Ordner aus Zelle ansprechen
17.07.2013 12:31:52
Hartmut
Grüß dich HaJo,
ich habe eine Datei upgeloaded.
Gruß
Hartmut

Na, umständlicher geht's ja wohl kaum, ...
17.07.2013 15:51:48
Luc:-?
Set RaBereich = Intersect(RaBereich, Range(Target.Address))!
Ich würde, wenn ich sicher gehen wollte, Hartmut, …
1. die Adresse in eine Konstante nehmen: Const adBereich$ = "A2:A7" → ist pflegeleichter!
2. mit einem separaten ZielObjekt ala Hajo arbeiten, aber das so setzen: Set relBer = Intersect(Target, Bereich).
3. käme dann For Each Ziel In relBer zum Einsatz, falls die vorherige Prüfung von relBer erfolgreich war → zB If relBer Is Nothing Then Exit Sub oder was dann folgen soll.
4. sollte Target normalerweise nur 1 Zelle umfassen, aber falls nicht, ist das auf diese Weise bei Ziel stets so.
Allerdings ist es hier wohl nicht so ausgefeilt erforderlich, da an dieser Stelle wohl keine zellweise Operation vonnöten ist.
Gruß Luc :-?

Anzeige
AW: Na, umständlicher geht's ja wohl kaum, ...
17.07.2013 17:43:23
Hartmut
Hi Luc,
für jemanden wie euch hört sich das alles einfach und rund an. Für mich sind das immer böhmische dörfer und ich brauche immer recht lange um etwas umzusetzen.
Ohne meinen zusätzlichen Wunsch funktioniert dieser Code einwandfrei. Jedoch ist es mühselig wenn man dann immer mehrfach etwas anklicken muss um in den jeweiligen ordner zu kommen. deswegen habe ich hier be herber ein wenig recherchiert und bin dabei auf diesen code gestossen der mir ein wenig zeit schenkt (wenn auch nur gedanklich. bzw. soll. Tja und dann war mein wissen darum auch beendet. Ich habe keine Ahnung von constanten und wie man sie am besten benutzt um zum erfolg zu kommen, deswegen versuche ich daher immer den einfachen weg auch wenn es umständlich erscheint. Ich bin dann eher der FUNKTIONSMENSCH. Ich bin immer happy wenn es funktioniert.
Deswegen kann ich solche Schritte welche du mir vorschlägst nicht immer so einfach umsetzen.
Gruß
Hartmut

Anzeige
Naja, wird sicher noch; aber, was ich ...
17.07.2013 18:45:33
Luc:-?
…sagen wollte ist, Hartmut,
dass „dein“ Code eigentlich idR ganz iO ist. Es ist nun so, dass ich(/wir) nicht immer auf das VBA-Level achte(n), wenn der Code ordentlich aussieht. Ich persönlich denke auch nicht unbedingt an Code-Sammler, da ich so etwas nur ausnahmsweise mache. ;-)
Konstanten wdn so wie im Bsp angegeben am PgmAnfang deklariert. Ihr Wert muss im Ggsatz zu normalen Variablen stets unverändert bleiben (so wie ursprgl angegeben). Das hat ggf den Vorteil, dass man bei Änderungen nur die Konstanten korrigieren und nicht das ganze Pgm nach den zu ändernden Werten durchsuchen muss. Hier schreibst du udU übrigens natürlich Set Bereich = Range(adBereich).
Gruß Luc :-?

Anzeige
AW: Naja, wird sicher noch; aber, was ich ...
18.07.2013 13:48:17
Hartmut
Hallöchen Luc,
dir auch ein großes DANKE für deine Hilfe.
Ich versuche alles einmal umzusetzen und werde die Tipps und Codes von dir und Klaus sobald wie möglich einmal ausprobieren.
Bis dahin
Gruß
Hartmut

Na dann viel Erfolg! Gruß owT
19.07.2013 20:59:03
Luc:-?
:-?

Dir auch ein großes DANKE owT
20.07.2013 22:30:13
hartmut

nicht nachvollziehbar
17.07.2013 12:18:42
Klaus
Hallo Hartmut,
Am Code liegst nicht, läuft bei mir unverändert 1A.
Bitte lade eine Musterdatei hoch, in welcher der Fehler reproduzierbar aufgerufen werden kann.
Grüße,
Klaus M.vdT.

AW: nicht nachvollziehbar
17.07.2013 12:30:50
Hartmut
Grüß dich Klaus,
ich hoffe das das Fläschen geschmeckt hat.
hier ist die Datei.
https://www.herber.de/bbs/user/86419.xlsm
Ich wollte eigentlich damit bezwecken, das wenn ich auf die Zelle d2:d500 klicke das dann zum jeweiligen Ordner gesprungen wird. Oben in dem Beispiel habe ich noch die Zellen in A2:A7 verwendet.
Gruß
Hartmut

Anzeige
Ha! Ganz fies, wer wollte dich denn da veräppeln?
18.07.2013 08:33:54
Klaus
Hallo Hartmut,
normalerweise antworte ich ja früher auf Beiträge, sorry.
erstmal ontopic: Ich sitze grad meine letzten Tage in Estland ab, und sobald ich in Deutschland bin habe ich zwei (!!) Umzüge zu organisieren. Wenn das Thema durch ist, werde ich mir aber ein schönes Fläschchen JonnyWalker Green-Label* von deiner Spende gönnen!
Ontopic:
Es hat etwas gedauert bis ich drauf gekommen bin
'    If Not Intersect(Target, Bereich) Is Nothing Then ' Zelle ist im Bereich

ist korrekt, wird aber rot markiert. Tippe ich die Zeile neu, wird sie nicht mehr rot markiert, aber
If Not Intersect(Target, bereich) Is Nothing Then

bereich, welches ja korrekt dimensioniert ist, wird nicht großgeschrieben also nicht erkannt!
Ausserdem ist das schonmal falsch:
Public Sub Worksheet_Selection1Change(ByVal Target As Range)

Es muss natürlich SelectionChange (ohne die 1) heissen. Allerdings gibt mir dein File dann eine Fehlermeldung.
Wenn ich deinen in einer frischen Datei Code ABTIPPE, funktioniert er.
Wenn ich ihn KOPIERE, bekomme ich für JEDE Zeile eine Fehlermeldung!
Also hab ich den Code mal in ein Tabellenblatt kopiert und die einzelnen Zeichen analysiert.
Jetzt kommt der Hammer:
Es ist so: in deinem Code kommen keine Leerzeichen vor! Ein Leerzeichen ist code(32), in deiner Sub stehen aber code(160) als Leerzeichen! Dadurch erkennt Excel natürlich keinen einzelnen Befehl mehr.
Es ist mir ehrlich gesagt unerklärlich wie das passieren kann. Meine bester Tip wäre, dass jemand böswillig Sabotage an deinem Code unternommen hat, denn sowas passiert eigentlich nicht ... aber ich unterstelle natürlich niemandem etwas.
Lösung:
LÖSCHE den GESAMTEN Code inklusive Private Sub und End Sub.
Erzeuge die Zeile Private Sub Worksheet_SelectionChange(ByVal Target As Range) (aber nicht tippen, sondern über die Dropdowns oben!)
TIPPE den gesamten Code aus deinem ersten Beitrag Buchstabe für Buchstabe ab.
Jetzt sollte es wieder funktionieren!
Grüße,
Klaus M.vdT.
* Ja, einen blended Scotch! Ich bin mir des Qualitätsunterschiedes von SingleMalt gegenüber Blended bewusst, aber über Geschmack lässt sich zum Glück nicht streiten

Anzeige
AW: Ha! Ganz fies, wer wollte dich denn da veräppeln?
18.07.2013 13:46:36
Hartmut
Hallo Klaus,
na dann mal Prost und lass ihn genussvoll die Kehle runterlaufen.
Danke mal wieder für deine Hilfe, leider habe ich hier nicht mehr lange I-Net deswegen ist ein wenig schwierig geworden. Ich melde mich sobald ich den Code neu eingegeben habe und gebe einen Status ab.
Auf jeden Fall nochmal DANKE
Gruß
Hartmut

Danke für die Rückmeldung! owT.
18.07.2013 13:57:40
Klaus
.

Klappt mit einem kleinen Unterschied
20.07.2013 22:29:15
hartmut
Hallo Klaus,
so weit so gut. Klappt wie du es gesagt hast.
Nur ist es vielleicht möglich, das wenn ich auf die jeweilige Zelle klicke das dann direkt in den jeweiligen Ordner weitergeleitet wird. Z.b. klicke ich auf ACT003 und durch den Klick gelange ich direkt in den richtigen Ordner. Wenn das gelänge wäre es perfekt.
gruß und Danke
Hartmut

Anzeige
AW: Klappt mit einem kleinen Unterschied
23.07.2013 07:48:47
Klaus
Hallo Hartmut,
diese Zeile öffnet die Ordnerauswahl:
Application.Dialogs(xlDialogOpen).Show "\users\document\zusatzarbeiten\"
wenn du jetzt einen Ordner direkt öffnen willst, musst du diese Zeile ändern.
Ordner direkt öffnen, irgendwas mit "shell". Mal fix googeln:
excel vba ordner öffnen
Da ich keine Zeit habe, 55.000 Ergebnisse zu lesen, schaue ich mir nur das allererste an:
http://vba1.de/vba/095explorer.php
und da finde ich unter anderem diese Zeile:
Shell "Explorer.exe /e, C:\Windows", vbNormalFocus
die müsste, nach Änderung der Pfadangabe, doch bei dir laufen. Teste mal aus!
Grüße,
Klaus M.vdT.
Anzeige

65 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige