nur… wie kann ich anstatt den tabellennamen (tab1)
sicherstellen dass es auch funktioniert wenn der tabellenname
umbenennt wird?
Hallo Sascha,
schau mal links in den VB-Editor zu einer Mappe (=Projekt) wo du Blätter umbenannt hast.
Du siehst da pro Blatt zwei Namen, der zweite in Klammern.
Der in Klammern ist der Blattname so wie ihn der User umbenennen kann und darf in Excel
Den sprichst du an mit „Name“, also z.B. so:
If Sh.Name = „Tabelle2“ And bolWechsel = True Then
Den ersten Namen das ist der internerne Name für das Blatt. Den kann man nur mit Vba abändern/asulesen usw.
Den sprichst du an mit „CodeName“, also z.B. so:
If Sh.CodeName = „Tabelle2“ And bolWechsel = True Then
Was genau willst du eigentlich machen?
Gilt das was du anfangs geschrieben hast, daß du wenn du in D4:smiley:4000 etwas geändert hast und dann SPÄTER das Blatt Tabelle2 aktivierst ein Makro gestartet werden soll?
Im Code von Thomas ändere das noting in nothing ab.
Ansonsten hat Thomas programmiert daß die Prozedur ausgeführt wird wenn du Tabelle2 aktivierst ODER in tabelle2 in D4:smiley:1000 etwas änderst.
Also haben wir beide verschiedene Programmierlogik hinter den Codes.
Nur, wir wissen beide nicht genau *glaub* welche Programmierlogik du eigentlich möchtest.
Und grundsätzlich bei Fehlern, genau angeben was passiert und in welcher Prozedur in welcher Codezeile. Auch mitteilen wenn nichts passiert.
Setze mal in jede Prozedur einen Haltepunkt.
Dann "arbeite in der mappe bis die Codes auslösen müßten.
Dann gehe im Code mit F8 weiter im Code…
Wenn du Tabelle2 aktivierst und die Prozedur
Private Sub Worksheet_Activate()
(in der du vor der Msgbox einen Haltepunkt hast)
wird gar nicht „angesprungen“, d.h. der Editor erscheint usw. dann liegt es nicht am Code selbst.
Dann laß diesen Code laufen:
Sub tt()
Application.EnableEvents=True
End sub
Wenn es daran auch nicht liegt so hast du die Prozedur im mfalschen Modul *gg*
Gruß
Reinhard
Gruß
Reinhard