|
いろいろ原因を考えておりますが…
もしかすると、この投稿にソースをコピペしたときに1行あたりの文字数制限で
強制的に或る行が改行されてしまい、「迷子」の行が出来てしまった可能性が
あります。
中身を変えず、1行あたりの文字数を短くしたソースを掲載しますので
差し替えてみてください。
Public Function KonzaiConv(KonzaiStr) As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim OutStr(1, 49) As String
Dim h1 As String
Dim HenkanData As String
HenkanData = KonzaiStr
HenkanData = Trim(HenkanData)
i = Len(HenkanData)
j = 1
Do Until j > i
h1 = Mid(HenkanData, j, 1)
If Val("&H" & Hex(AscB(MidB(h1, 2, 1))) & _
Hex(AscB(MidB(h1, 1, 1))) & "&") > Val(&H7F&) Then
If Val("&H" & Hex(AscB(MidB(h1, 2, 1))) & _
Hex(AscB(MidB(h1, 1, 1))) & "&") > Val(&H30F6&) Then
If Val("&H" & Hex(AscB(MidB(h1, 2, 1))) & _
Hex(AscB(MidB(h1, 1, 1))) & "&") > Val(&HFF5A&) Then
If i > j Then
If Asc(Mid(HenkanData, j + 1, 1)) = _
Val(&HDE&) Or Asc(Mid(HenkanData, j + 1, 1)) = _
Val(&HDF&) Then
j = j + 1
h1 = h1 & Mid(HenkanData, j, 1)
End If
End If
h1 = StrConv(h1, vbWide)
OutStr(1, k) = h1 ' 半角カタカナ
Else
h1 = StrConv(h1, vbNarrow)
OutStr(1, k) = h1 ' 2byte alpha
End If
Else
OutStr(0, k) = h1 ' ひらがな,カタカナ(全角)
End If
Else
OutStr(0, k) = h1 ' 1byte ASCII
End If
j = j + 1: k = k + 1
Loop
For l = 0 To k
KonzaiConv = KonzaiConv & OutStr(0, l)
KonzaiConv = KonzaiConv & OutStr(1, l)
Next
End Function
|
|