Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
856to860
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
856to860
856to860
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabellenblatt-Name in Formel verarbeiten?

Tabellenblatt-Name in Formel verarbeiten?
21.03.2007 13:22:11
Klaus
Hallo!
Wie kann ich den Namen eines Tabellenblatts in einer Formel im selben Tabellenblatt ansprechen?
Hintergrund:
Der Tabellenblattname bezeichnet bei mir einen Gültigkeitszeitraum. Im Tabellenblatt wird dieser Zeitraum jeweils in einer Formel verarbeitet. Tabellenblätter für neue Zeiträume entstehen durch Kopieren des vorherigen Blattes.
Damit ich nicht bei jedem neuen Tabellenblatt 2x den Zeitraum eintragen muss (und um damit eine mögl. Fehlerquelle zu eliminieren) möchte ich dies jew. durch die Formel übernehmen.
Andere Möglichkeit wäre evtl., dass ich den Zeitraum einmal *im Tabellenblatt* eingebe und sich das Blatt dann automatisch nach diesem Eintrag benennt.
Ist eine der beiden Varienten möglich?
Danke!
Gruß
Klaus

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt-Name in Formel verarbeiten?
21.03.2007 14:37:00
Klaus
Danke!
Gibt es auch eine Möglichkeit, meine 2. Variante zu realisieren (Tabelleblatt automatisch nach einem Zellenwert benennen)?
Gruß
Klaus
AW: Tabellenblatt-Name in Formel verarbeiten?
21.03.2007 15:29:46
Josef
Hallo Kalus,
geht auch.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target(1, 1).Address = "$A$1" Then
    If IsValidSheetName(Target(1, 1)) Then
        Me.Name = Target(1, 1)
    Else
        MsgBox "Ungültiger Name!"
    End If
End If
End Sub


Private Function IsValidSheetName(ByVal strName As String) As Boolean
Dim objRegExp As Object

Set objRegExp = CreateObject("vbscript.regexp")

With objRegExp
    .Global = True
    .Pattern = "^[^\/\\:\*\?\[\]]{1,31}$"
    .IgnoreCase = True
    IsValidSheetName = .test(strName)
End With

Set objRegExp = Nothing

End Function

Das Blatt wird nach Zelle "A1" benannt.
Gruß Sepp
Anzeige
AW: Tabellenblatt-Name in Formel verarbeiten?
22.03.2007 11:25:54
Klaus
Danke, das geht schon in die richtige Richtung.
Ein Problem gibt's dabei noch. Ich hatte mein Anliegen nur etwas verkürzt dargestellt:
Es soll zwar so sein, dass sich der Tabellblattname aus der Zelle A1 ableitet, allerdings enthält A1 eine Formel, die sich aus den Inhalten meherer anderer Zellen ergibt.
Mit dem Code von dir ändert sich zwar der Tabellenblattname wenn ich die Zelle A1 direkt ändere, aber leider nicht wenn sich nur der Wert in A1 durch Änderung der zu deren Berechnung dienenen Zellen ändert.
Wie müsste der Code geändert werden, damit auch das hinhaut?
Und, was mir grad noch auffällt: Jetzt wo ich VBA drinhabe fragt mich Excel beim Öffnen der Datei immer nach der Makro-Aktivierung.
Ist es nicht evtl. möglich, dies für diese Datei so einzustellen, dass ich nicht jedesmal diese Angabe machen muss? Ich meine, ich verwende diese Datei alleine und ich weiß ja, was ich da reinprogrammiert habe... da muss ich nicht jedesmal gewarnt werden.
Danke!
Gruß
Klaus
Anzeige
AW: Tabellenblatt-Name in Formel verarbeiten?
22.03.2007 23:29:00
Josef
Hallo Klaus,
so geht's bei berechneten Zellen.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Calculate()
If Range("A1").Text <> Me.Name Then
    If IsValidSheetName(Range("A1").Text) Then
        Me.Name = Range("A1").Text
    Else 'optional
        MsgBox "Ungültiger Name!"
    End If
End If
End Sub

Private Function IsValidSheetName(ByVal strName As String) As Boolean
Dim objRegExp As Object

Set objRegExp = CreateObject("vbscript.regexp")

With objRegExp
    .Global = True
    .Pattern = "^[^\/\\:\*\?\[\]]{1,31}$"
    .IgnoreCase = True
    IsValidSheetName = .test(strName)
End With

Set objRegExp = Nothing

End Function

Zur Makroabfrage, gib in der Onlin-Recherche dieser Seite mal "Selfcert" ein, dann findest
du genügend Beispiele wie man eine Signatur für Makros erstellt.
Gruß Sepp
Anzeige
AW: Tabellenblatt-Name in Formel verarbeiten?
23.03.2007 10:08:00
Klaus
Super! Ich danke dir vielmals!
Wie das aber so ist, findet man doch immer noch was, was man nicht bedacht hat ;o)
Wenn ich versehentlich Werte in meine Zellen eingebe, die einen Tabellenblattnamen generieren, den es schon gibt, bekomme ich eine unschöne Fehlermeldung (Laufzeitfehler 1004).
Ich stelle es mir zu aufwändig vor, zu prüfen, ob ein Tabellenblattname schon existiert, aber kann ich evtl einfach diese Fehlermeldung abfangen oder ersetzen durch z.B. "Zeitraum existiert schon! Bitte neu eingeben!", bzw. solange einen Dummy-Namen eingeben o.ä.?
Gruß
Klaus
AW: Tabellenblatt-Name in Formel verarbeiten?
23.03.2007 21:11:48
Josef
Hallo Klaus,
auch kein Problem.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Calculate()
If Range("A1").Text <> Me.Name Then
    If IsValidSheetName(Range("A1").Text) And Not SheetExist(Range("A1").Text) Then
        Me.Name = Range("A1").Text
    Else
        Me.Name = "Ungültiger Name"
    End If
End If
End Sub

Private Function IsValidSheetName(ByVal strName As String) As Boolean
Dim objRegExp As Object

Set objRegExp = CreateObject("vbscript.regexp")

With objRegExp
    .Global = True
    .Pattern = "^[^\/\\:\*\?\[\]]{1,31}$"
    .IgnoreCase = True
    IsValidSheetName = .test(strName)
End With

Set objRegExp = Nothing

End Function

Private Function SheetExist(ByVal sheetName As String, Optional WbName As String) As Boolean
Dim wks As Worksheet
On Error GoTo ERRORHANDLER
If WbName = "" Then WbName = ThisWorkbook.Name
For Each wks In Workbooks(WbName).Worksheets
    If wks.Name = sheetName Then SheetExist = True: Exit Function
Next
ERRORHANDLER:
SheetExist = False
End Function

Gruß Sepp
Anzeige
AW: Tabellenblatt-Name in Formel verarbeiten?
26.03.2007 10:30:00
Klaus
Großartig! Danke!
Wenn ich jetzt durch Kopieren des Vorherigen ein neues Tabellenblatt erstelle, dann hat es natürlich zuerst durch die gleichen Zellinhalte den gleichen Namen, bis der Zeitraum in den Zellen angepasst wird.
Nach erstellen des Blattes tut Excel erstmal ca. 2 Sekunden etwas (keine Ahnung was, die Sanduhr erscheint und eine im Tab.Blatt befindliche Balkengrafik flackert wild). Dann heißt mein neues Blatt erstmal "Zeitraum eingeben" bis ich die entsprechenden Änderungen eingebe.
Vielleicht sollte ich mir doch irgendwann mal viiieeel Zeit nehmen um meine VBA-Kenntnisse zu vertiefen, man kann ja doch viele praktische Sachen damit anstellen :o) Ich hab sowas dann aber doch recht selten gebraucht. Deswegen noch so ungeübt.
Gruß
Klaus
Anzeige
AW: Tabellenblatt-Name in Formel verarbeiten?
26.03.2007 11:11:14
Klaus

Zur Makroabfrage, gib in der Onlin-Recherche dieser Seite mal "Selfcert" ein, dann findest
du genügend Beispiele wie man eine Signatur für Makros erstellt.
Das hat bei mir halb funktioniert. Die Sicherheitswarnung mit den 3 Auswahlmöglichkeiten "Makros deaktivieren", "Makros aktivieren" und "Weitere Informationen" kommt jetzt nach der Selbstzertifizierung nicht mehr.
Aber seit ich die Formeln und den Namen bzgl. meiner anderen Frage im Forum
https://www.herber.de/forum/archiv/856to860/t856815.htm#856822
eingegeben habe, bekomme ich zusätzlich noch beim Öffnen - und manchmal auch beim Speichern - die Meldung:
Diese Arbeitsmappe enthält eine oder mehrere Microsoft Excel 4.0 Makros [...] Möchten Sie diese Makros aktivieren? (Ja) (Nein)
Ist ein über Einfügen/Namen definierter Name ein Excel-4.0-Makro? In seiner Beispieldatei hat Jörg (jockel) beim Namen inhalt unter "Bezieht sich auf" =ARBEITSMAPPE.ZUORDNEN(1+0*JETZT()) eingetragen. Das ganze funktioniert auch prima.
Sonst habe ich keine Makros aufgezeichnet.
Was kann ich da tun?
Gruß
Klaus
Anzeige

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige