Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Registername aus Zelle holen

Forumthread: Registername aus Zelle holen

Registername aus Zelle holen
24.01.2009 16:04:00
Jürgen
Hallo zusammen,
hab das Makro hier erstellt:

Sub Registername_anpassen()
' Registername_anpassen Makro
' Schreibt den Inhalt der Zelle C2 in den Registernamen
' Tastenkombination: Strg+Umschalt+R
Sheets(1).Name = Range("C2").Value
Sheets(2).Name = Range("C2").Value
'Sheets(3).Name = Range("C2").Value
'Sheets(4).Name = Range("C2").Value
'Sheets(5).Name = Range("C2").Value
'Sheets(6).Name = Range("C2").Value
'Sheets(7).Name = Range("C2").Value
'Sheets(8).Name = Range("C2").Value
End Sub


Solange ich ich nur Blatt 1 nutze gehts, aber sobald das zweite Blatt mit dabei ist, ist Schluß.
Der Laufzeitfehler sagt ich benutze zwei gleiche Bezeichnungen. Quatsch Sheets(1) ist doch nicht gleich Sheets(2). Hab auch AllSheets probiert. Kennt VBA nicht, wahrscheinlich fehlt die Zuweisung, oder?
Auch gefällt mir die Beschränkung nicht, geht das nicht allgemeiner. Also beliebig viele neue Blätter ohne VBA Änderung?
Da ich oft auch mit großen Zahlen arbeite, wäre mir statt 1000000 lieber 1 Mio oder zumindest die Mio mit Punkten = 1.000.000.
Danke schon mal und hand
Jürgen

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Registername aus Zelle holen
24.01.2009 16:06:00
Hajo_Zi
Hallo Jürgen,
Du es darf nur eine Tabelle mit dem Namen geben. Bei Dir sollen 8 Tabelen den gleichen Namen haben.

AW: Registername aus Zelle holen
24.01.2009 16:10:00
Oberschlumpf
Hi Jürgen
...Der Laufzeitfehler sagt ich benutze zwei gleiche Bezeichnungen. Quatsch Sheets(1) ist doch nicht gleich Sheets(2...
Aber Range("C2").Value bleibt immer Range("C2").Value.
Dein Code "soll" allen Sheets den Namen "verpassen", der als Wert in Range("C2").Value steht.
Aber das geht nicht, weil in Excel nun mal in der selben Datei 2 Tabellenblätter nicht den gleichen Namen haben können.
Ist deine Frage so beantwortet?
Ciao
Thorsten
Anzeige
AW: Registername aus Zelle holen
24.01.2009 16:27:00
Josef
Hallo Jürgen,
warum es nicht funzt Haben ja Hajo und Thorsten schon erläutert.
So sollte es gehn.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub NameSheets()
    Dim objWs As Worksheet
    Dim strSheet As String
    
    For Each objWs In ThisWorkbook.Worksheets
        strSheet = objWs.Range("C2").Text
        If IsNumeric(strSheet) Then
            If Clng(strSheet) < 10 ^ 6 Then
                strSheet = Format(strSheet, "#,#")
            Else
                strSheet = Format(Clng(strSheet), "#,,.0 Mio")
            End If
        End If
        If IsValidSheetName(strSheet) Then
            objWs.Name = strSheet
        End If
    Next
End Sub

Public 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

Gruß Sepp

Anzeige
Danke Sepp, wia sagt da Bayer "well done" oT
25.01.2009 06:54:20
Jürgen
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Registername aus Zelle holen


Schritt-für-Schritt-Anleitung

Um den Registername aus einer Zelle zu übernehmen, kannst Du folgende Schritte befolgen:

  1. Öffne Excel und gehe zu dem Arbeitsblatt, in dem Du den Namen anpassen möchtest.

  2. Gib den gewünschten Namen in die Zelle C2 ein.

  3. Drücke Alt + F11, um den VBA-Editor zu öffnen.

  4. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf „VBAProject (dein Arbeitsbuch)“.
    • Wähle „Einfügen“ > „Modul“.
  5. Kopiere den folgenden VBA-Code in das Modul:

    Sub Registername_anpassen()
       Dim objWs As Worksheet
       Dim strSheet As String
    
       For Each objWs In ThisWorkbook.Worksheets
           strSheet = Range("C2").Value
           If IsValidSheetName(strSheet) Then
               objWs.Name = strSheet
           End If
       Next
    End Sub
    
    Public Function IsValidSheetName(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
  6. Schließe den VBA-Editor und kehre zu Excel zurück.

  7. Führe das Makro aus:

    • Drücke Alt + F8, wähle „Registername_anpassen“ und klicke auf „Ausführen“.

Damit wird der Registername aus der Zelle C2 übernommen.


Häufige Fehler und Lösungen

  • Fehler: „Laufzeitfehler: Der Name ist ungültig.“

    • Lösung: Stelle sicher, dass der Name in C2 keine ungültigen Zeichen (z.B. /, \, :, *, ?, [, ]) enthält und dass er nicht bereits von einem anderen Blatt verwendet wird.
  • Fehler: „Der Name ist bereits vergeben.“

    • Lösung: Überprüfe, ob ein anderes Blatt im Workbook bereits denselben Namen hat. Du kannst diesen Fehler vermeiden, indem Du sicherstellst, dass die Namen eindeutig sind.

Alternative Methoden

Falls Du keine VBA-Makros verwenden möchtest, kannst Du auch einen Teilstring aus einer Zelle in eine andere Zelle übertragen:

  1. Verwende die Formel =C2 in der Zelle, wo der Name erscheinen soll.
  2. Du kannst auch die Funktion TEIL() verwenden, um nur einen Teil des Textes zu übernehmen:
    =TEIL(C2, 1, 10)  ' Übernimmt die ersten 10 Zeichen aus C2

Praktische Beispiele

  1. Beispiel für die Übernahme eines Namens:

    • Wenn in C2 „Umsatzbericht“ steht, wird der Registername des Blattes „Umsatzbericht“.
  2. Beispiel für die Verwendung von TEIL:

    • Für einen Wert in C2 wie „Q1 2023 Umsatz“ kannst Du mit =TEIL(C2, 1, 2) nur „Q1“ übernehmen.

Tipps für Profis

  • Namen dynamisch anpassen: Wenn Du regelmäßig neue Blätter hinzufügst, kannst Du die Funktion „IsValidSheetName“ erweitern, um automatisch einen Zähler anzuhängen, falls der gewünschte Blattname bereits vergeben ist.
  • Nutze Formatierungen: Bei großen Zahlen kannst Du auch die Formatierung für den Registername in Mio verwenden, indem Du die Formatierung in der Zelle C2 entsprechend anpasst.

FAQ: Häufige Fragen

1. Frage: Kann ich den Registername aus einer anderen Zelle als C2 übernehmen?
Antwort: Ja, Du kannst die Zelle im VBA-Code anpassen, indem Du Range("C2") durch die gewünschte Zelle ersetzt.

2. Frage: Welche Excel-Version benötige ich für die VBA-Funktionalität?
Antwort: Die VBA-Funktionalität ist in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010 und höher.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige