2016年9月25日日曜日

MS-IME のローマ字設定(レジストリ)を作成する関数

昨日作成した「GetHexCode」関数で何がやりたかったかと言うと要するにこれがやりたかったわけです。
今回作成した「RomeReg」関数は引数として「kf=あ」を渡すと「6B,66,3D,82,A0,00,\」の様な文字列を返します。
これを使ってレジストリファイルを作ってレジストリを「アレ」すれば通常のローマ字設定では編集できない定義が使えたりします。
具体的には月配列のような特殊な配列をローマ字定義の書き換えのみで実装できるわけです。

Option Explicit

Function RomeReg(xs As String) As String
    ' --- 宣言 ---
    Dim i           As Long
    Dim HexCode     As String
    Dim Result      As String
    
    ' --- 処理 ---
    For i = 1 To Len(xs)
        HexCode = GetHexCode(Mid(xs, i, 1))
        If Len(HexCode) = 2 Then
            ' 16進表記で2文字と言う事は1バイト文字
            Result = Result & HexCode & ","
        ElseIf Len(HexCode) = 4 Then
            ' 16進表記で4文字と言う事は2バイト文字
            Result = Result & Left(HexCode, 2) & "," _
                            & Right(HexCode, 2) & ","
        Else
            ' ※ここには到達しないはず
            Result = "-- Something is wrong!! --"
        End If
    Next i
    
    ' --- 結果 ---
    RomeReg = Result & "00,\"
End Function

' 先頭文字の文字コードを16進表記で返す関数
Function GetHexCode(xs As String) As String
    GetHexCode = Hex(Asc(xs))
End Function

ワークシートから呼び出す事も出来ますし VBA の中で使用しても OK です。
みんな月配列使いましょう!!

2016年9月24日土曜日

先頭文字の文字コードを16進表記で返す関数

引数として「A」を渡したら「41」、「あ」を渡したら「82A0」を返す関数。
Function GetHexCode(xs As String) As String
    GetHexCode = Hex(Asc(xs))
End Function
ワークシートから呼び出してもいいし、VBAの中で呼び出してもOK。