Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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ß
Antworten 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
Antworten 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.
Antworten Top
#4
gelöscht, siehe nächster Beitrag.
Schöne Grüße
Berni
Antworten 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
Antworten 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
Antworten 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
Antworten Top


Gehe zu:


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