> 具体的なコーディング例を教えていただけませんでしょうか?
参考までに・・・。↓
Option Explicit
Option Compare Binary
Public Const MaxRow = 65536
Public Const AscKuten As Integer = &HA1 '半角句点のAscii文字コード
Public Const AscDakuOn As Integer = &HDE '半角濁音 〃
Public Const AscHanDakuOn As Integer = &HDF '半角半濁音 〃
Public Sub Test(ByRef wkSht As excel.Worksheet, _
ByVal colNumber As Long, _
Optional ByVal startRow As Long = 2, _
Optional ByVal endRow As Long = MaxRow)
Dim i As Long
With wkSht
For i = startRow To endRow
.Cells(i, colNumber).Value = KanaWideConv(.Cells(i, colNumber).Value)
Next i
End With
End Sub
Public Function KanaWideConv(ByVal strSource As String) As String
Dim strTmp As String
Dim lngStrLength As Long
Dim i As Long
If Len(strSource) = 0 Then
KanaWideConv = ""
Exit Function
End If
lngStrLength = Len(strSource)
'先頭の1文字のみ、別処理。
For i = lngStrLength To 2 Step -1
strTmp = Mid$(strSource, i, 1)
Select Case Asc(strTmp)
'濁音、半濁音の処理。(直前の文字と2文字1組で処理)
Case AscDakuOn, AscHanDakuOn
strSource = Replace(strSource, Mid$(strSource, i - 1, 2), _
StrConv(Mid$(strSource, i - 1, 2), vbWide))
'その他の半角カタカナ。
Case AscKuten To &HDD
Mid$(strSource, i, 1) = StrConv(strTmp, vbWide)
End Select
Next i
strTmp = Left$(strSource, 1)
Select Case Asc(strTmp)
Case AscKuten To AscHanDakuOn
Mid$(strSource, 1, 1) = StrConv(strTmp, vbWide)
End Select
KanaWideConv = strSource
End Function
Public Function IsHankakuKana(ByRef strSource) As Boolean
Dim i As Long
IsHankakuKana = True
For i = 1 To Len(strSource)
Select Case Asc(Mid$(strSource))
Case AscKuten To AscHanDakuOn
Exit Function
End Select
Next i
IsHankakuKana = False
End Function
お礼
貴重なソースを拝見させていただきありがとうございました。 私のレベルでは、ちょっとツラかったので・・・ 結局、全角に変換して、変換前と変換後の文字列のバイト数を比較してメッセージを表示するというコーディングで逃げてしまいました(笑) しばらくソースと格闘していましたので、直ぐにお礼が書けず失礼いたしました。 無事納品できました。ありがとうございました。