Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[Excel] Tabellenblätter automatisch beschriften
#1
@All,

beim Beschriften von Tabellenblättern per VBA sind verschiedene Dinge zu berücksichtigen, da andernfalls ein Fehler euftritt:

1. die Länge des Namen darf nicht größer als 31 Zeichen sein
2. einige Zeichen sind im Tabellennamen nicht erlaubt
3. eine (andere) Tabelle mit dem gewünschten Namen ist schon vorhanden

Das wird beim folgenden Code berücksichtigt

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim strTabelle As String
    strTabelle = Sh.Name
    If Target.Count = 1 Then
      If Target.Address = "$A$1" Then
         Application.EnableEvents = False
         If Len(Target.Value) > 31 Then
            MsgBox "Name darf nicht mehr als 31 Zeichen beinhalten"
            Range("A1") = strTabelle
         ElseIf InStr(Target, "/") > 0 Or InStr(Target, "?") > 0 Or InStr(Target, ":") > 0 _
            Or InStr(Target, "\") > 0 Then
            MsgBox "Name enthät nicht zulässige Zeichen"
            Range("A1") = strTabelle
         ElseIf Not IsError(Application.Evaluate(Target.Value & "!A1")) And strTabelle <> Target.Value Then
            MsgBox "Diese Tabelle gibt es schon"
            Range("A1") = strTabelle
         ElseIf Sh.Name <> Sh.Range("A1") Then
            Sh.Name = Sh.Range("A1")
         End If
         Application.EnableEvents = True
      End If
    End If
End Sub

Falls es noch weitere als die im Code aufgeführten nicht erlaubten Zeichen gibt, bitte informieren, damit der Code ergänzt werden kann.


GrußformelBeverly's Excel - Inn
Ein Fragesteller sollte Antworten gründlich und komplett lesen und nicht nur die für ihn angenehmen Teile.
Antwortento top
#2
Hi Karin,

ohne den Code selbst getestet zu haben, fehlen offenbar in deiner Ausschlußliste drei Zeichen.

Nachstehende Function prüft auf unzulässige Zeichen (ersetzt diese durch Nichts) und Länge:

Code:
Function CheckSheetName(strName As String) As String
      Dim strNotAllowed As Variant
      Dim n As Integer
      'Im Tabellennamen nicht zulässige Zeichen
      strNotAllowed = Array(":", "\", "/", "?", "*", "[", "]")
      'unerlaubte Zeichen durch nichts ersetzen
      For n = 0 To UBound(strNotAllowed)
          strName = Replace(strName, strNotAllowed(n), "")
      Next
      
      'Namen auf 31 Zeichen begrenzen
      CheckSheetName = Left(strName, 31)
  End Function

aus Herber Forum
Mit freundlichen Grüßen  :)
Michael
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste