Office: (Office 2016) Sonderzeichen finden per VBA

Helfe beim Thema Sonderzeichen finden per VBA in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Liebes Forum! Ich habe ein Problem. Sonderzeichen (SZ) per VBA bei Eingabe überprüfen. In einem Tabellenblatt (Datei 1) habe ich ein Auswahlfeld (B1)... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von srbär, 18. November 2020.

  1. Sonderzeichen finden per VBA


    Liebes Forum!

    Ich habe ein Problem. Sonderzeichen (SZ) per VBA bei Eingabe überprüfen.

    In einem Tabellenblatt (Datei 1) habe ich ein Auswahlfeld (B1) mit Kurzbezeichnungen. Aus dieser Auswahl wird das Tabellenblatt über VBA umbenannt, funktioniert super. Sind in diesem Auswahlfeld Sonderzeichen z.B. / : * ? " < > | erscheint eine MsgBox da das Tabellenblatt diese Zeichen nicht unterstützt.

    Datei 1: Code im Tabellenblatt

    Private Sub Worksheet_Change(ByVal Target As Range)
    'Sonderzeichen suchen, da die Kurzbezeichnung als Tabellenblattname verwendet wird.
    If Not Application.Intersect(Target, Range("B1:B1")) Is Nothing Then
    On Error GoTo Fehlermeldung
    If Target = "" Then Exit Sub
    ActiveSheet.Name = Range("B1").Value
    End If
    Exit Sub

    Fehlermeldung:
    MsgBox "Ungültiges Zeichen in der Kurzbezeichnung." & vbCrLf & vbCrLf & _
    "Da die Kurzbezeichnung als Tabellenblattname verwendet wird, dürfen keine Sonderzeichen verwendet werden." & vbCrLf & vbCrLf & _
    "Der Kurzbezeichnung enthält ungültige Zeichen wie * / : ? | [ ]" & vbCrLf & vbCrLf & _
    "Bitte Kurzbezeichnung korrigieren. Erst danach kann die Kurzbezeichnung in das Tabellenblatt übernommen werden."

    End Sub
    _________________
    In einer externen Exceldatei (Datei 2) Tabellenblatt habe ich die Auflistung mit Namen und Kurzzeichen (Spalte B2:B80) für die Datei 1.

    In Datei 2 bekomme ich schon bei einem Minuszeichen in Spalte B die MsgBox dass dieses Zeichen nicht verwendet werden darf. .

    Datei 2: Code im Tabellenblatt
    Private Sub Worksheet_Change(ByVal Target As Range)
    'Sonderzeichen melden, da die Kurzbezeichnung als Tabellenblattname verwendet wird.

    If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
    On Error GoTo fehlermeldung
    If Target = "" Then Exit Sub
    ActiveSheet.Name = Range("B:B").Value
    End If
    Exit Sub

    fehlermeldung:
    MsgBox "Ungültige Zeichen in der Kurzbezeichnung." & vbCrLf & vbCrLf & _
    "Da die Kurzbezeichnung als Tabellenblattname verwendet wird, dürfen keine Sonderzeichen wie * / : ? | [ ] verwendet werden." & vbCrLf & vbCrLf & _
    "Bitte Kurzbezeichnung korrigieren."

    End Sub

    In Datei2 folgt schon die Meldung bei einem Minuszeichen.

    In beiden Dateien (1+2) sollen in der Kurzbezeichnung keine Sonderzeichen verwendet werden.


    Vielen Dank für Eure Unterstützung.

    LG Sigi:

    :)
     
  2. Code:
    Du willst dem Blatt als Namen die Werte aller Zellen der Spalte B geben?

    Deine Fehlerroutine gibt bei jedem Fehler undifferenziert die gleiche Meldung aus.

    Anstelle den Code blindlings in einen Fehler rammeln zu lassen:
    - Prüfe den Wert auf unzulässige Zeichen
    - Prüfe, ob ein Blatt gleichen Namens bereits existiert.
    - Verwende Me anstelle Activesheet.
     
    EarlFred, 20. November 2020
    #2
  3. Hallo EarlFred!

    Vielen Dank für deine Antwort. Aber es funktioniert nicht. Es wird noch immer bei einem Minuszeichen eine Fehlermeldung angezeigt.

    In der Datei 1 gibt es nur eine Zelle (B1) für die Listenauswahl der Kurzzeichen der Abteilungen. Diese Auswahl wird dann zur Benennung des Tabellenblattes herangezogen. Die Daten für die Auswahlliste befindet sich in Datei 2.

    In der Datei 2 befinden sich die Einträge aller Abteilungen (Spalte A = Langbezeichnung), in der Spalte B sind die Kurzzeichen. In diesen sollen sich keine Sonderzeichen befinden.

    Für die Prüfung ob ein Blatt gleichen Namens bereits existiert, fehlt mir leider das wissen in VBA. Für eine Lösung wäre ich sehr dankbar.

    Vielen Dank.

    LG Sigi
     
  4. Sonderzeichen finden per VBA

    Hallo,

    ich würde es anders rum machen ... siehe hier

    Für das Worksheet, such nach 'WorksheetExists'

    Sabina
     
    Flotter Feger, 20. November 2020
    #4
  5. Hallo Sabina, leider sind meine VBA Kenntnisse sehr schlecht, und größtenteils noch spanische Dörfer.
    LG
     
  6. Hallo,

    so ...
    Code:
    Sabina
     
    Flotter Feger, 20. November 2020
    #6
  7. Hallo Sabina!

    Danke für die Rückmeldung. Da ich nicht perfekt bin, dazu meine Fragen zu deinen Ausführungen:

    Dieser Code kommt in das Tabellenblatt der Datei 1. -> Korrekt Ja/Nein

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim strBezeichnung As String

    If Target = "" Then Exit Sub
    If Not Application.Intersect(Target, Range("B1")) Is Nothing Then
    strBezeichnung = ClearValue(Target.Value)
    If Not WorkSheetExists(strBezeichnung) Then
    ActiveSheet.Name = strBezeichnung
    Else
    '*** etwas anderes ***
    End If
    End If
    Exit Sub
    End Sub

    Diese Codes "Funktionen" kommen in das Arbeitsblatt der Datei 1. -> Korrekt Ja/Nein

    Function ClearValue(ByVal sTmp As Variant) As String
    Dim i As Long
    Dim a As String
    Dim sText As String
    On Error GoTo weiter

    For i = 1 To Len(sTmp)
    a = Mid(sTmp, i, 1)
    If a Like "[ 0-9A-Za-zÄäÖöÜüß_.]" Then sText = sText & a
    weiter:
    Next i
    ClearValue = sText
    End Function

    Function WorkSheetExists(ByVal WS As Variant) As Boolean
    On Error Resume Next
    WorkSheetExists = Not Worksheets(WS) Is Nothing
    End Function


    In Datei 2 sind alle Abteilungen in Langschrift (Spalte A), Kurzzeichen in Spalte B eingetragen. Aus dieser Datei werden in der Datei 1 in Zelle B1 eine Abteilung ausgewählt, deren Kurzzeichen in B1 eingetragen wird.

    Wenn ich nun in der Datei 2 die ganze Spalte B auf Sonderzeichen überprüfen möchte, muss ich alles gleich eintragen wie in der Datei nur Range("B1") ändern auf Range("B:B"). Ist das Korrekt.

    Vielen Dank für deine Hilfe.

    LG Sigi
     
  8. Sonderzeichen finden per VBA

    Hallo,

    ich habe noch immer nicht begriffen, wie Datei 1 und Datei 2 zusammenhängen. Deshalb kann ich dir auch nur theoretisch weiterhelfen.
    Was willst du mit den 78 Zellen in Spalte B ... wie viele Tabellenblätter willst du umbenennen ? *eek.gif*

    Musterdatei mit etwas besserer Erklärung ... bitte.

    Sabina
     
    Flotter Feger, 23. November 2020
    #8
  9. Hallo Sabina!

    Datei 1 funktioniert und kann als abgeschlossen betrachtet werden. Pro Tabellenblatt wird nur in Zelle B1 eine Abteilung eingegeben.

    In diesem Tabellenblatt wird in Zelle B1 eine Abteilung ausgewählt, und dieses Kurzzeichen wird als Tabellenname verwendet. Wenn eine bestehende Abteilung in einem weiteren Tabellenblatt eingegeben wird, wird der Bezeichnung eine (2) angefügt. Das ist OK:

    In Datei 2 (Abteilungen) sind alle Abteilungen aufgelistet und dienen für die Auswahl in Datei 1 Zelle B1.

    In der Spalte B werden die Kurzzeichen für die Abteilungen eingegeben. Beim Verlassen der Zelle soll geprüft werden, ob Sonderzeichen verwendet wurden, wenn ja sollte eine MsgBox mit Hinweis, dass keine Sonderzeichen verwendet werden dürfen, erscheinen.

    Datei Abteilungen habe ich angehängt.

    Vielen Dank für deine Bemühungen, wünsche dir noch einen schönen Tag.
    Liebe Grüße Sigi
     
  10. Hallo,

    ins Codemodul der Tabelle1
    Code:
    Sabina
     
    Flotter Feger, 24. November 2020
    #10
  11. Hallo Sabina!

    Vielen Dank für deine Rückmeldung. Haben deinen Code in die Tabelle 1 kopiert.

    Leider kommt bei jedem Verlassen der Zelle in Spalte B der Hinweis "keine Sonderzeichen !!!", egal ob in der Zelle nur Buchstaben eingetragen wurden, oder auch Buchstaben mit Zahlenkombinationen z.B. 5-1; oder IM 1 Abt. 3. Wurde in einer Zelle ein Sonderzeichen korrigiert, kommt auch der Hinweiss "keine Sonderzeichen".


    Frage: Bei dem Code

    If Not a Like "[ 0 / 9A Za zÄäÖöÜüß_.]" Then --> werden die in den Anführungszeichen angeführten Zeichen für die Überprüfung eingegeben und können diese auch noch durch andere Zeichen ergänzt werden. Auf was muß bei der Ergänzung geachtet werden.

    Ein großes Dankeschön an deine Geduld

    LG Sigi
     
  12. Hallo,

    mein Code funktioniert ... den habe ich getestet.
    Die Liste der erlaubten Zeichen ist aus meiner Sicht komplett ... mehr erlaubt dir Excel in einem Tabellennamen nicht, oder hat da nichts verloren.
    Wenn du die Liste der erlaubten Zeichen abändern möchtest, kann dir die Online-Hilfe zu LIKE helfen.

    Außerdem ist es nicht sehr glücklich, wenn du schon eine Datei hochlädst, dass da keinerlei Musterdaten drin stehen, wie es sein kann und wie die hinterher aussehen sollen.

    Ich habe eine funktionierende Lösung erstellt ... bei allem anderen, bin ich deshalb raus.

    Sabina
     
    Flotter Feger, 27. November 2020
    #12
  13. Sonderzeichen finden per VBA

    Danke Sabina!
     
  14. Liebes Forum!

    Code von Sabina in die Code-Tabelle kopiert. Bei Verlassen der Spalte B erscheint immer die Fehlermeldung "keine Sonderzeichen", auch wenn kein Sonderzeichen eingetragen wurde.

    Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Application.Intersect(Target, Me.Range("B:B")) Is Nothing Then
    If Target = "" Or Target.Row = 1 Then Exit Sub
    If Not ClearValue(Target.Value) Then
    MsgBox "Keine Sonderzeichen !!!"
    Target.Select
    End If
    End If
    Exit Sub
    End Sub

    Function ClearValue(ByVal sTmp As Variant) As Boolean
    Dim i As Long
    Dim a As String
    Dim sText As String

    For i = 1 To Len(sTmp)
    a = Mid(sTmp, i, 1)
    If Not a Like "[ 0-9A-Za-zÄäÖöÜüß_.]" Then
    ClearValue = False: Exit Function
    End If
    Next i
    End Function



    Bitte um Hilfe. Habe die Datei mit Code im Anhang.

    Arbeite mit Excel 2016.

    Vielen Dank.

    LG Sigi
     
  15. Hallo Sigi,

    ja klar, das steht doch auch so im Code!

    Überlege mal, was die Funktion ClearValue() zurückgibt und was es bedeutet, wenn in der aufrufenden Prozedur "If Not ClearValue(Target.Value) Then" steht.

    Sabina hat dir doch "nur" ein Beispiel gegeben - anpassen an deine Gegebenheiten mußt du das schon selber.

    Gruß Ulrich
     
    knobbi38, 1. Dezember 2020
    #15
Thema:

Sonderzeichen finden per VBA

Die Seite wird geladen...
  1. Sonderzeichen finden per VBA - Similar Threads - Sonderzeichen VBA

  2. Text nach bestimmten Zeichen trennen (variabel)

    in Microsoft Excel Hilfe
    Text nach bestimmten Zeichen trennen (variabel): Hallo, ich habe eine Verständnisfrage bzw. Probleme bei der Formelfindung: Ausgangslage (als Beispiel anbei): in einer Zelle ist ein Text mit Sonderzeichen (nicht immer identisch, kann länger...
  3. Serienbrief Excel Datenquelle

    in Microsoft Word Hilfe
    Serienbrief Excel Datenquelle: Hallo zusammen, ich habe folgendes Problem: In meiner Excel Datenquelle Schreibe ich z.B. 1234567, 1234568 Name Spalte Ref Im Sereienbrief steht dann eine 0 In der alten Doc Version gab es hier...
  4. Excel Buchstaben anderer Länder korekt darstellen

    in Microsoft Excel Hilfe
    Excel Buchstaben anderer Länder korekt darstellen: Guten Tag, ich habe folgendes Problem, ich habe eine Tabelle voll Datensätze mit Namen verschiedener Länder. Die Datensätze wurden mit LibreOffice erstellt, dort wurden diese aus GoogleDocs in...
  5. Exel Sonderzeichen über VBA in Code einfügen

    in Microsoft Excel Hilfe
    Exel Sonderzeichen über VBA in Code einfügen: Für einen Stammbaum habe ich bisher über 400 Personen in Excel erfasst. Zur schnelleren Suche nach zusammenhängenden Personen werden die wesentlichen Daten in eine ListBox (ListPersonen)...
  6. Eingabeproblem nach Sonderzeichen

    in Microsoft Word Hilfe
    Eingabeproblem nach Sonderzeichen: Hallo, ich habe folgendes Problem: nach Eingabe eines Sonderzeichens in Word (Tastenkombination mit ALT) wird statt des anschließenden normal eingegebenen Zeichens, das Sonderzeichen wiederholt...
  7. Sonderzeichen für Gültigen Dateinamen elemeniren

    in Microsoft Excel Hilfe
    Sonderzeichen für Gültigen Dateinamen elemeniren: Hallo miteinander, in Spalte C stehen bei mir Namen mit Projekt nummern, blöderweise können Projektnummern Sonderzeichen enthalten wirklich alles,es gibt keine Richtlinie dafür leider. ich...
  8. Sonderzeichen per VBA / SQL ersetzen

    in Microsoft Access Hilfe
    Sonderzeichen per VBA / SQL ersetzen: Hallo zusammen, ich müsste Sonderzeichen, z.B. ⅛ per SQL ersetzen. Ich schaffe es aber nicht im VBA Code das Sonderzeichen zu "beschreiben". Aus ⅛ wird beim Einfügen ¨û *eek.gif* Aber damit...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden