Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Ordner aus Zelle ansprechen

Betrifft: Ordner aus Zelle ansprechen von: Hartmut
Geschrieben am: 17.07.2013 12:14:49

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

  

Betrifft: AW: Ordner aus Zelle ansprechen von: Hajo_Zi
Geschrieben am: 17.07.2013 12:18:30

Hallo Harmut,

hast Du vielleicht die Argumente vertauscht?
Ich schreibbe immer
Set RaBereich = Intersect(RaBereich, Range(Target.Address))

GrußformelHomepage


  

Betrifft: AW: Ordner aus Zelle ansprechen von: Hartmut
Geschrieben am: 17.07.2013 12:31:52

Grüß dich HaJo,

ich habe eine Datei upgeloaded.

Gruß
Hartmut


  

Betrifft: Na, umständlicher geht's ja wohl kaum, ... von: Luc:-?
Geschrieben am: 17.07.2013 15:51:48

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 :-?


  

Betrifft: AW: Na, umständlicher geht's ja wohl kaum, ... von: Hartmut
Geschrieben am: 17.07.2013 17:43:23

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


  

Betrifft: Naja, wird sicher noch; aber, was ich ... von: Luc:-?
Geschrieben am: 17.07.2013 18:45:33

…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 :-?


  

Betrifft: AW: Naja, wird sicher noch; aber, was ich ... von: Hartmut
Geschrieben am: 18.07.2013 13:48:17

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


  

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

:-?


  

Betrifft: Dir auch ein großes DANKE owT von: hartmut
Geschrieben am: 20.07.2013 22:30:13




  

Betrifft: nicht nachvollziehbar von: Klaus M.vdT.
Geschrieben am: 17.07.2013 12:18:42

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.


  

Betrifft: AW: nicht nachvollziehbar von: Hartmut
Geschrieben am: 17.07.2013 12:30:50

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


  

Betrifft: Ha! Ganz fies, wer wollte dich denn da veräppeln? von: Klaus M.vdT.
Geschrieben am: 18.07.2013 08:33:54

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


  

Betrifft: AW: Ha! Ganz fies, wer wollte dich denn da veräppeln? von: Hartmut
Geschrieben am: 18.07.2013 13:46:36

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


  

Betrifft: Danke für die Rückmeldung! owT. von: Klaus M.vdT.
Geschrieben am: 18.07.2013 13:57:40

.


  

Betrifft: Klappt mit einem kleinen Unterschied von: hartmut
Geschrieben am: 20.07.2013 22:29:15

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


  

Betrifft: AW: Klappt mit einem kleinen Unterschied von: Klaus M.vdT.
Geschrieben am: 23.07.2013 07:48:47

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.


 

Beiträge aus den Excel-Beispielen zum Thema "Ordner aus Zelle ansprechen"