ExcelVBAで外字を扱う


概要

 Excelの文字コードはUnicodeですが,VBAの文字コードはShift_Jisです。
 なので,外字の判定をどうするかという問題が生じます。
 私はWorksheetFunction.UnicharとWorksheetFunction.Unicodeを使って,コード番号で外字を扱っています。

使いたい外字の文字コードを確認する

 vbaに以下のサブプロシージャを作成します。

vba
Sub printUnicode()
    Debug.Print WorksheetFunction.Unicode(ActiveCell)
End Sub

 そして,任意のセルに外字1文字を入力したら,先ほどのマクロを動かします。

 イミディエイトウインドウが表示されていないときは,「表示」「イミディエイトウインドウ」を選択します。
 ここに入力されている数字が,その外字の文字コード番号です。

文字コードから外字を扱う

 文字コードが分かったら,外字をWorksheetFunction.Unichar(文字コード番号)で扱えるようになります。

 これで入力もできますし

外字入力
Sub inputUnicode()
    Cells(1, 2) = WorksheetFunction.Unichar(10102)
End Sub

 文字判定もできます。

外字判定
Sub checkUnicode()
    Dim blackCircle1 As String
    blackCircle1 = WorksheetFunction.Unichar(10102)
        Dim i As Integer
        For i = 1 To 3
            If InStr(Cells(i, 1), blackCircle1) > 0 Then
                Cells(i, 2) = True
            Else
                Cells(i, 2) = False
            End If
         Next i
End Sub