VBA - Zelländerung Makro auslösen, jedoch sperren
#1
Hi Leute,

ich habe 52 identische Excel-Dateien. In Zelle H1 befindet sich ein Dropdownmenü mit den Namen der Dateien. Nun möchte ich bei Änderung der Zelle H1, dass er die entsprechende Datei öffnet. Das habe ich auch soweit hinbekommen mit folgendem Code:


Code:
Sub Worksheet_Change(ByVal Target As Excel.Range)
   If Target.Address = "$H$1" Then
       Call Mappeoeffnen
   End If
End Sub

Das Problem liegt nun jedoch darin, dass er zwar die Prozedur "Mappeoeffnen" ausführen soll, die Änderung, mit der das Sub gestartet wird jedoch verhindert werden soll. H1 soll also den selben Wert behalten wie vorher.

Ich möchte dem Nutzer nur suggerieren, dass er sich quasi noch in der selben Datei befindet.



Gruß
Top
#2
Code:
Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Target.Address = "$H$1" Then
       Application.EnableEvents = False
       Call Mappeoeffnen
       Range("H1") = "Dein gewünschter Wert"
       Application.EnableEvents = True
  End If
End Sub
Schöne Grüße
Berni
Top
#3
Hi Misterburns,

Danke für deine Antwort...
Das mit den events kannte ich noch nicht ... Das Problem ist, dass er den Wert einstellen soll, der vorher drin gestanden hat .... der ändert sich also von Datei zu Datei.
Top
#4
gelöscht, siehe nächster Beitrag.
Schöne Grüße
Berni
Top
#5
Du könntest mit 

Code:
Sub Worksheet_Change(ByVal Target As Excel.Range)
 If Target.Address = "$H$1" Then
      Application.EnableEvents = False
       Application.Undo
      Call Mappeoeffnen
      Application.EnableEvents = True
 End If
End Sub

arbeiten, das ist der Rückgängig-Befehl in VBA, allerdings ist der eher unzuverlässig. Aber versuch es mal, vielleicht macht es dich ja glücklich.
Schöne Grüße
Berni
[-] Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:
  • EasY
Top
#6
Ahhhhh ...

soweit macht er mich sehr glücklich :) DANKE... inwiefern arbeitet er unzuverlässig?



Gruß


P.S.: Den Call Mappeoeffnen musste ich voranstellen
Top
#7
Der Befehl ist unzuverlässig, weil sobald der Benutzer eine zusätzliche Aktion ausführt, sich das Undo auf den letzten Befehl bezieht. Das hat aber in deinem Fall keine Relevanz, weil nicht möglich.
Außerdem funktioniert der Befehl nur, wenn eine händische Aktion des Benutzers ausgeführt wurde, VBA-Befehle können nicht rückgängig gemacht werden (meines Wissens).
Schöne Grüße
Berni
[-] Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:
  • EasY
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste