Ich habe meine erste VBA-Sub geschrieben, und es ist Art der Arbeit, wie es soll, aber ich kann nicht herausfinden, der Teil, der falsch ist. Es soll selektiv Doppelbyte-Leerzeichen, Buchstaben, Zahlen und Interpunktion in Einzelbyte konvertieren, wenn eine Zeichenfolge aus japanischen und lateinischen Doppelbyte-Zeichen und -Zeichen besteht.VBA selektive Umwandlung von Double-Byte in Single-bye Zeichen
Der folgende Code ist und funktioniert basierend auf „Fang und Umwandeln“ den Bereich der UTF-16-Codes, die zu den problematischen Zeichen mit voller Breite entsprechen. Es funktioniert nur auf lokalisierten Maschinen (d. H. Wenn Sprache/Region auf Japan eingestellt ist), aber ich glaube nicht, dass das Problem mit meinem Code mit lokalisierten Funktionen zu tun hat. Jede Hilfe bei dem, was ich falsch mache, wäre sehr, sehr geschätzt!
Public Sub Converter()
Dim objRange As Range
For Each objRange In ActiveSheet.UsedRange
Call Alphanumeric(objRange)
Next
End Sub
Private Sub Alphanumeric(ByRef objRange As Range)
Dim strIn As String
Dim strOut As String
Dim strAlphanumeric As String
Dim i As Integer
If objRange.HasFormula Or _
VarType(objRange.Value) <> vbString Then
Exit Sub
End If
strIn = objRange.Value
strOut = ""
strAlphanumeric = ""
For i = 1 To Len(strIn)
If AscW(Mid(strIn, i, 2)) + 65536 >= 65280 And _
AscW(Mid(strIn, i, 2)) + 65536 <= 65370 Then
strAlphanumeric = strAlphanumeric & Mid(strIn, i, 1)
Else
If strAlphanumeric <> "" Then
strOut = strOut & StrConv(strIn, vbNarrow)
strAlphanumeric = ""
End If
strOut = strOut & Mid(strIn, i, 1)
End If
Next
objRange.Value = strOut
End Sub
Ja !! Das hat es getan. Ich danke dir sehr. – mixadelic