Autor
|
Thema: Tabellenblattname aus Zelle (4226 mal gelesen)
|
heiko_hems Mitglied Freier Architekt
Beiträge: 1295 Registriert: 14.01.2005 BuildingDesignSuitePremium 2021 Revit / ACA
|
erstellt am: 19. Dez. 2008 08:55 <-- editieren / zitieren --> Unities abgeben:
Moin Zusammen, das Anzeigen des Blattnamens in eine Zelle hatten wir hier schon ein paar Mal, funktioniert auch prächtig. Jetzt meine Frage: geht das auch umgekehrt ? Kann der Blattname aus einem Zellwert generiert werden ? ------------------ Gruß Heiko "Es gibt kein richtiges Leben im falschen." - Theodor W. Adorno in Minima Moralia, 43 und das hat er gesagt lange bevor es SL, WOW, ETC gab ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 19. Dez. 2008 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für heiko_hems
|
heiko_hems Mitglied Freier Architekt
Beiträge: 1295 Registriert: 14.01.2005
|
erstellt am: 19. Dez. 2008 09:53 <-- editieren / zitieren --> Unities abgeben:
Hallo Frederik, der Ansatz ist prima ! Kann ich erreichen, dass wenn eine Zelle A1 geändert wurde das VBA-Makro abläuft ? Dazu noch ein Tipp, dann hoffe ich den Rest hinzubekommen (bin ein VBA-Dummie) ! Danke
------------------ Gruß Heiko "Es gibt kein richtiges Leben im falschen." - Theodor W. Adorno in Minima Moralia, 43 und das hat er gesagt lange bevor es SL, WOW, ETC gab ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 19. Dez. 2008 10:33 <-- editieren / zitieren --> Unities abgeben: Nur für heiko_hems
|
heiko_hems Mitglied Freier Architekt
Beiträge: 1295 Registriert: 14.01.2005
|
erstellt am: 19. Dez. 2008 11:01 <-- editieren / zitieren --> Unities abgeben:
Boooah ! das hab' ich jetzt doch nicht verstanden, was meinst Du mit Microsoft Excel Objekt ? Wo bring' ich das Makro unter ? Sorry die Nachfrage (s.o. ), aber ich kannte Makros bislang nur in de Arbeitsmappe... ------------------ Gruß Heiko "Es gibt kein richtiges Leben im falschen." - Theodor W. Adorno in Minima Moralia, 43 und das hat er gesagt lange bevor es SL, WOW, ETC gab ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 19. Dez. 2008 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für heiko_hems
In der VBA-Umgebung gibt es links eine Liste, da bist Du schon ganz richtig ;-). Ich hatte Module vorausgesetzt, die werden beim Macro aufzeichnen erzeugt... Schrittweise aus Excel heraus: Alt+F11 (ruft die VBA-IDE auf) - Strg+R (ruft den Projekt-Explorer in VBA auf) - Deine Mappe auswählen - den Ordner Microsoft Excel Objekte öffnen - Doppelklick auf Dein Tabellenblatt. Oberhalb des Code-Fensters siehst Du zwei Dropdown-Listen. Die linke zeigt '(Allgemein)' an, da klickst Du drauf. Wähle 'Worksheet', es wird Code erzeugt ('SelectionChange...', den kannst Du gleich wieder wegputzen). Wähle in der rechten Liste 'Change' - da rein kommt der Einzeiler aus obigem Beitrag. ------------------ DIN1055.de | Lastannahmen für Anwender NEU: Foren zu DIN 1055 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
heiko_hems Mitglied Freier Architekt
Beiträge: 1295 Registriert: 14.01.2005
|
erstellt am: 19. Dez. 2008 11:58 <-- editieren / zitieren --> Unities abgeben:
Sehr gut, vielen Dank Frederik, für die feine Schritt-für-Schritt-Anleitung ! So bring' ich's hin. Super ! Ich kannte bislang nur Module, wieder was gelernt. Us4U Danke ! ------------------ Gruß Heiko "Es gibt kein richtiges Leben im falschen." - Theodor W. Adorno in Minima Moralia, 43 und das hat er gesagt lange bevor es SL, WOW, ETC gab ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
heiko_hems Mitglied Freier Architekt
Beiträge: 1295 Registriert: 14.01.2005 BuildingDesignSuitePremium 2021 Revit / ACA
|
erstellt am: 19. Dez. 2008 12:10 <-- editieren / zitieren --> Unities abgeben:
ein Problem bleibt mir noch: Ich will aus der Eingabe 1.1.09 das Tabellenblatt mit Januar '09 benannt haben. In meiner unbedarften Weise habe ich den Code so umgefummelt: If Target.Address = Range("AB1").Address Then ActiveSheet.Name = TEXT(Monat(AB1);"MMMM")+" '"+Text(Jahr(AB1));"JJ") Tut leider nicht... Das hat auch nicht getan: If Target.Address = Range("AB1").Address Then ActiveSheet.Name = TEXT(Monat(Range("AB1"));"MMMM")+" '"+Text(Jahr(Range("AB1"));"JJ") Was muss ich bei der Umsetzung von ExcelFormeln in VBA-Kiste beachten, oder geht das so gar nicht ?
------------------ Gruß Heiko "Es gibt kein richtiges Leben im falschen." - Theodor W. Adorno in Minima Moralia, 43 und das hat er gesagt lange bevor es SL, WOW, ETC gab ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 19. Dez. 2008 14:29 <-- editieren / zitieren --> Unities abgeben: Nur für heiko_hems
Hm... Eine Möglichkeit wäre, den Macro-Recorder anzuwerfen, die Formel zu editieren, und die Aufnahme zu beenden. Wie die Mach-mir-aus-der-Monatzs zahl-einen- Text-Funktion in VBA lautet, weiß ich auch nicht; auf Umwegen hilft der hier: Code: Private Sub Worksheet_Change(ByVal Target As Range)Dim rg As Range Dim strDate As String 'Hilfsvariable für die Blattbezeichnung Set rg = Range("A1") If Target.Address = rg.Address Then strDate = Month(rg) Select Case strDate Case 1 strDate = "Januar" Case 2 strDate = "Februar" Case 3 strDate = "März" '... '... Case Else: Exit Sub End Select strDate = strDate & " '" & Right(Year(rg), 2) ActiveSheet.Name = strDate End If Set rg = Nothing End Sub
Für den Hinterkopf: Diese Funktion läuft permanent im Hintergrund mit, solange das Blatt bearbeitet wird - und springt nur an, wenn 'rg' auch das Ziel ist.------------------ DIN1055.de | Lastannahmen für Anwender NEU: Foren zu DIN 1055 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 19. Dez. 2008 15:25 <-- editieren / zitieren --> Unities abgeben: Nur für heiko_hems
Code: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = Range("A1").Address Then ActiveSheet.Name = MonthName(Month(Cells(1,1))) & " '" & Right(Year(Cells(1,1)),2) End Sub
für Excelblattbefehle kann man auch die WorksheetFunction nehmen
Code: Sub snip() in_englisch = WorksheetFunction.Text(Cells(1,1), "MMMM YY") auf_deutsch = MonthName(Month(Cells(1,1))) & " '" & Right(Year(Cells(1,1)),2) End Sub
BTW einfach im Objektkatalog nach Year oder Month suchen und die Hilfe lesen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
heiko_hems Mitglied Freier Architekt
Beiträge: 1295 Registriert: 14.01.2005
|
erstellt am: 22. Dez. 2008 09:27 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank Zusammen, @Frederik: das ist tatsächlich zu viel Code für jedes Blatt, @Thomas: Genau das hab' ich gesucht, hätte ich aber mangels intimeren VBA-Kenntnissen niemals selbst gefunden ! (Auch wenn ich das in Hilfe oder Objektkatalog nachlese bleibt da so manches ein großes Rätsel - ich gelobe aber Besserung...) Geruhsame Tage wünscht ------------------ Gruß Heiko "Es gibt kein richtiges Leben im falschen." - Theodor W. Adorno in Minima Moralia, 43 und das hat er gesagt lange bevor es SL, WOW, ETC gab ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |