Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA erkennt Sonderzeichen nicht

VBA erkennt Sonderzeichen nicht
13.09.2022 10:09:15
buny
Hallo zusammen,
wie kann ich mein Skript dazu bringen ein Sonderzeichen (Koreanisches Zeichen) zu erkennen? Beim Versuch es direkt einzufügen oder einzulesen erscheint "?". Mir bekannt ist das UTF-8 Zeichen. Wäre es damit möglich?
Case "Korean"
index= Koreanisches Zeichen

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA erkennt Sonderzeichen nicht
13.09.2022 10:17:51
Sigi.21
Hallo,
wo willst du es einfügen? Im VBA-Code im Editor?
Dann nimm ChrW() und die entsprechende Nr aus dem Unicode.
Gruß Sigi
AW: VBA erkennt Sonderzeichen nicht
13.09.2022 10:38:36
buny
Hallo Sigi, wie gehe ich mit einem Unicode um, welches einen Buchstaben enthält? Es folgt eine Fehlermeldung.
Es handelt sich um den Unicode U+AC1A
AW: VBA erkennt Sonderzeichen nicht
13.09.2022 10:45:05
Sigi.21
Hallo,
du brauchst eine 5-stellige Zahl.
Ich hab' mal eine Funktion (sowie ein kl. Makro) angefügt. Ggf. mal rumprobieren. (s. Mappe)
Gruß Sigi
https://www.herber.de/bbs/user/155146.xlsm
Anzeige
U+AC1A
13.09.2022 10:54:33
RPP63
Moin!
U steht für Unicode
AC1A ist ein hexadezimaler Wert
dieser wird per HEXINDEC(AC1A) zu 44058
ChrW(44051) ergibt (sollte ergeben) das gesuchte Zeichen.
Hier mal in Excel:
 RPPRPQRPR
1AC1A44058

ZelleFormel
RPQ1=HEXINDEZ(RPP1)
RPR1=UNIZEICHEN(RPQ1)

Gruß Ralf
Anzeige
ChrW
13.09.2022 10:57:21
RPP63
Tippfehler (44058 ist richtig) und gleich mal überprüft:

ActiveCell = ChrW(44058)
ergibt
 RQD
5

Anzeige
AW: VBA erkennt Sonderzeichen nicht
13.09.2022 10:58:05
Der
Hallo,
wie schon von anderen geschrieben, kannst Du mit ChrW das Zeichen einfügen, z. B. in Zelle A1:
Range("A1").Value = ChrW(&HAC1A)
Gruß
Michael
AW: VBA erkennt Sonderzeichen nicht
13.09.2022 11:08:05
Der
Ergänzung:
Wenn du vom Zeichen auf die Codenummer umwandeln willst:
debug.print AscW(Range("A1").value)
AW: VBA erkennt Sonderzeichen nicht
13.09.2022 10:25:27
Daniel
Hi
der VBA-Editor kann nur den einfachen 8-bit-ASCII-Code darstellen (0-255), dementsprechen kannst du dort auch nur Zeichen aus diesem Bereich dort direkt angeben.
Brauchst du im Script Zeichen aus dem 16-bit-Unicode-Zeichensatz, gibt es folgende Möglichkeiten:
a) du ermittelst die Unicode-Nummer und erzeugts das Zeichen darüber, entweder mit ChrW(xxx) oder mit Worksheetfunction.Unichar(xxx) (wobei ChrW nicht alle Codes erkennt, Worksheetfunction.Unichar kann mehr)
b) du hinterlegst das benötigte Zeichen in einer Excelzelle und übernimmst es von dort.
Gruß Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Sonderzeichen in Excel VBA erkennen und verwenden


Schritt-für-Schritt-Anleitung

  1. Unicode-Zeichen identifizieren: Bestimme den Unicode-Wert des Sonderzeichens, das Du verwenden möchtest. Beispielsweise ist das koreanische Zeichen durch den Unicode U+AC1A definiert.

  2. Umwandlung in Dezimal: Wandle den hexadezimalen Wert in Dezimal um. Das geht mit der Funktion HEXINDEC(), z. B. HEXINDEC("AC1A"), was den Wert 44058 ergibt.

  3. Verwendung in VBA:

    • Du kannst das Zeichen direkt mit ChrW() einfügen. Beispiel:
      ActiveCell.Value = ChrW(44058)
    • Alternativ kannst Du den Wert in einer Excel-Zelle hinterlegen und dann über VBA darauf zugreifen.
  4. ASCII-Code ermitteln: Falls Du den ASCII-Code für ein Zeichen im 8-bit-Bereich benötigst, kannst Du die Funktion AscW() verwenden. Beispiel:

    Debug.Print AscW(Range("A1").Value)

Häufige Fehler und Lösungen

  • Fehler: Sonderzeichen wird nicht angezeigt (?).

    • Lösung: Stelle sicher, dass Du den richtigen Unicode-Wert verwendest und dass Deine Excel-Version Unicode-Zeichen unterstützt.
  • Fehler: Zeichen nicht in VBA einfügbar.

    • Lösung: Der VBA-Editor unterstützt nur den 8-bit-ASCII-Code. Verwende stattdessen ChrW() für Unicode-Zeichen.
  • Fehler bei der Umwandlung.

    • Lösung: Überprüfe, ob Du eine 5-stellige Zahl verwendest, wenn Du den Unicode in ChrW() einfügst.

Alternative Methoden

  • Verwendung von WorksheetFunction.Unichar: Diese Methode ist nützlich, wenn Du Zeichen aus dem 16-bit-Unicode-Zeichensatz benötigst. Beispiel:

    ActiveCell.Value = Application.WorksheetFunction.Unichar(44058)
  • Direktes Einfügen aus Zellen: Speichere das Sonderzeichen in einer Zelle und verwende dann den Zellbezug in Deinem VBA-Skript:

    ActiveCell.Value = Range("B1").Value

Praktische Beispiele

  • Beispiel 1: Einfügen eines koreanischen Zeichens in Zelle A1:

    Sub InsertKoreanCharacter()
      Range("A1").Value = ChrW(44058) ' 갚
    End Sub
  • Beispiel 2: Umwandeln eines Hex-Codes in ein Zeichen:

    Sub ConvertHexToCharacter()
      Dim hexValue As String
      hexValue = "AC1A"
      Range("A1").Value = ChrW(HEXINDEC(hexValue))
    End Sub

Tipps für Profis

  • Nutze die Excel ASCII-Tabelle für eine schnelle Referenz zu Zeichen und deren Codes, um das Programmieren zu erleichtern.
  • Bei der Arbeit mit verschiedenen Zeichencodierungen, stelle sicher, dass Deine Excel-Version die entsprechenden Codes unterstützt.
  • Experimentiere mit verschiedenen Unicode-Zeichen, um zu sehen, welche in Deinen Anwendungen am besten funktionieren.

FAQ: Häufige Fragen

1. Wie kann ich einen ASCII-Code in VBA ermitteln?
Du kannst die AscW() Funktion verwenden, um den ASCII-Code eines Zeichens zu ermitteln. Beispiel:

Debug.Print AscW("A") ' Gibt 65 zurück

2. Warum wird mein Sonderzeichen nicht angezeigt?
Das kann daran liegen, dass der VBA-Editor nur 8-bit ASCII unterstützt. Stelle sicher, dass Du ChrW() mit dem richtigen Unicode-Wert verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige