Betrifft: Funktion bei Änderung des Blattnamens?
von: joerg
Geschrieben am: 29.01.2010 22:46:24
Hallo schon wieder,
Was ich jetzt bräuchte wäre eine Möglichkeit, eine Funktion aufzurufen, wenn sich der Name eines Blattes ändert... Also etwa äquivalent zu 'Worksheet_Activate()', nur eben 'WorksheetName_change()'... Gibt's sowas?
Sorry mal für die vielen Fragen im Schnellfeuermodus, aber sowas wie das hier ist echt schwer zu googeln, wenn man eben nicht weiss wie die Funktion heisst... :)
Gruss,
Jo
Betrifft: Wir sind schneller als GOOGLE ;-)
von: NoNet
Geschrieben am: 29.01.2010 23:01:12
Hey Jo,
ich sehe in Deiner Fragefrequenz kein Problem, zumal sich per GOOGLE entweder zu wenig (oder nichts) oder viel zu viel zu einigen Themen findet und man unter den 32564 Suchergebnissen manchmal stundenlang suchen muss, bis man DAS richtige Ergebnis gefunden hat. Allerdings kann man dabei auch eine Menge (unerwartetes) dazu lernen :-D. Oftmals liegt es aber am richtigen Suchbegriff, das ist vor allem schwierig, wenn man nicht weiß, wie der betreffende Fachbegriff lautet (Wer kommt schon ohne es zu kennen auf "SpecialCells" oder "BuiltinDocumentProperties" ?)
Hier ein Lösungsvorschlag von mir :
- Erstelle irgendwo im Blatt die Funktion =ZELLE("Dateiname";A1)
- Verwende im Klassenmodul des Tabellenblattes das Private Sub Worksheet_Calculate()
Durch das Umbenennen des Tabellenblattes wird die o.g. Funktion neu berechnet, wodurch das Calculate()-Ereignis des Tabellenblattes ausgelöst wir ;-)
Gruß, NoNet
Betrifft: AW: Wir sind schneller als GOOGLE ;-)
von: joerg
Geschrieben am: 29.01.2010 23:07:46
Moin -
Da scheints aber doch eher um den Dateinamen zu gehen? ich bräuchte was für die Änderung des Namens eines Blattes, deswegen sag ich ja 'so wie Worksheet_activate'...? :) Oder bin ich jetzt irgendwie durcheinander?
(Also ich muss zugeben ich hab's jetzt nicht ausprobiert... Hätte aber noch dazu das Problem, dass der Dateiname u.U. unbekannt ist...)
Gäb's noch eine andere Lösung?
Gruss,
Jo
Betrifft: Meckern ohen auszuprobieren ? Tssss _oT
von: NoNet
Geschrieben am: 29.01.2010 23:13:42
_oT = "ohne Text"
Betrifft: Ja, aber wenn ich den Dateinamen nicht weiss? _oT
von: joerg
Geschrieben am: 29.01.2010 23:17:11
...
Betrifft: "Dateiname" ist Exakt "DATEINAME" !
von: NoNet
Geschrieben am: 29.01.2010 23:37:06
Hallo Joerg,
Du verwechselst da wohl etwas : Der Dateiname der Mappe spielt hier überhaupt keine Rolle !
Wenn ich schreibe =ZELLE("Dateiname";A1), dann meine ich auch =ZELLE("Dateiname";A1) und nicht etwa =ZELLE("Mappe1.xls";A1) oder =ZELLE("Auswertung 2009.xls";A1) etc. !!
Allerdings habe ich gerade gemerkt, dass hier noch einige Fehler drin sind:
- Diese Funktion liefert erst dann ein Ergebnis, wenn die mappe zumindest einmalig gespeichert wurde
- Das Makro springt dann logischerweise bei jeder Eingabe im Tabellenblatt an :-(
Vielleicht benötigst Du doch eine andere Lösung....sorry, mir fällt gerade keine gute Idee ein...
Gruß, NoNet
Betrifft: Na, macht doch nichts! Der zu ermittelnde...
von: Luc:-?
Geschrieben am: 30.01.2010 00:10:05
...Teil nach "]" muss ja nicht mal in eine extra Variable gespeichert wdn, NoNet & Joerg,
wenn der in ..._Change immer mit Me.Name vgl wird. Bei Nichtübereinstimmung ist der Umbenennungsfall eingetreten. ..._Change hat doch ein Target, das dann genau diese Zelle repräsentiert. Wenn das nicht der Fall ist, also If Not Intersect(Target, diesezelle) Is Nothing Then den False-Zweig ergibt, wird die Proz halt gleich wieder verlassen.
Gruß+schöWE, Luc :-?
Betrifft: AW: Funktion bei Änderung des Blattnamens?
von: Tino
Geschrieben am: 30.01.2010 11:17:20
Hallo,
ich finde dies ist nicht ganz so einfach.
Man muss zuerst sich die Tabellen Merken und diese dann bei Berechnung überprüfen.
Ich verwende dazu ein Array, dieses wird bei 3 verschiedenen Events aktualisiert.
Hier meine Beispieldatei dazu, diese Datei zuvor irgendwo abspeichern.
https://www.herber.de/bbs/user/67642.xls
Gruß Tino
Betrifft: Ergänzung ...
von: Tino
Geschrieben am: 30.01.2010 11:33:52
Hallo,
das Event Workbook_NewSheet müsste man noch erweitern, damit neue Tabellen auch dazu kommen.
Private Sub Workbook_NewSheet(ByVal Sh As Object) Sh.EnableCalculation = False Sh.Range("A1").FormulaR1C1 = "=MID(CELL(""dateiname"",RC),FIND(""]"",CELL(""dateiname"",RC))+1,10^9)" Call Fuell_Array_Tabs Sh.EnableCalculation = True End SubGruß Tino