つらつら Excel VBA

私の備忘録です。

ふりがな


数式で出すと漢字以外のフリガナも全部出る。

=PHONETIC(A1)





以下VBA。まずは表示から。

Selection.Phonetics.Visible = True 'フリガナ表示
Selection.Phonetics.Visible = False 'フリガナ非表示


フリガナの設定。漢字も設定できた。

Selection.Characters.PhoneticCharacters = "田中太郎"


空文字で削除。

Selection.Characters.PhoneticCharacters = "" '空文字


IME辞書?からフリガナを自動設定する。おまかせなので結果はそれなり。

'オリジナルフリガナがあるとフリガナが自動作成されない
Sub ふりがな自動設定()
    With Selection
        .Characters.PhoneticCharacters = "" '消してから
        .SetPhonetic '自動設定
        .Phonetics.Visible = True '表示
    End With
End Sub


ふりがなの種類を設定。1セル内のフリガナにおいて、ひらがなとカタカナの混在は不可能。

'表示設定
Selection.Phonetics.CharacterType = xlHiragana 'ひらがな
'xlKatakana 'カタカナ
'xlKatakanaHalf '半角カタカナ


ふりがな配置を変えると見た目こんな感じ。

'ふりがな配置設定
Selection.Phonetics.Alignment = xlPhoneticAlignLeft '左揃え
'xlPhoneticAlignCenter '中央揃え
'xlPhoneticAlignDistributed '均等割り付け
'xlPhoneticAlignNoControl '指定なし


フリガナ書式設定。主張強い。

Sub ふりがなフォント設定()
    
    Dim r As Range: Set r = Selection
    
    With r.Phonetics.Font
        .Name = "MS 明朝"
        .Size = 8
        .Color = vbRed
        .Bold = True '太字
        .Italic = True '斜体
        .Underline = xlUnderlineStyleDouble'二重下線
        .Strikethrough = True '取消線
    End With
    
End Sub


特定の文字へフリガナを振ることも可能。

Sub ふりがな個別設定()
    
    Dim r As Range: Set r = Selection
    r.Value = "電気を自在に操る電撃使い最上位の超電磁砲"
    
    r.Phonetics.CharacterType = xlKatakana 'カタカナ
    r.Phonetics.Alignment = xlPhoneticAlignCenter '中央揃え
    r.Phonetics.Visible = True '表示
    
    r.Characters.PhoneticCharacters = ""
    r.Characters(Start:=9, Length:=4).PhoneticCharacters = "エレクトロマスター" '電撃使い
    r.Characters(Start:=17, Length:=4).PhoneticCharacters = "レールガン" '超電磁砲
    
End Sub


ふりがなのフォント情報をリセットする。新規ブックからフォント情報だけ引っ張ってくる処理を作ったけど新規シートで良かったような気がする・・・

Sub ふりがなフォント書式クリア()
    
    Dim clearRange As Range
    Set clearRange = Selection
    
    Dim tempBook As Workbook
    Dim tempSheet As Worksheet
    Set tempBook = Workbooks.Add
    Set tempSheet = tempBook.Worksheets(1)
    
    Dim tempRange As Range
    Set tempRange = tempSheet.Range("A1")
    
    Dim r As Range
    Dim f As Font
    
    For Each r In clearRange
        
        Set f = r.Phonetics.Font
        
        With tempRange.Phonetics.Font
            f.Name = .Name
            f.Size = .Size
            f.Color = .Color
            f.Bold = .Bold '太字
            f.Italic = .Italic '斜体
            f.Underline = .Underline
            f.Strikethrough = .Strikethrough '取消線
        End With
        
    Next
    
    tempBook.Close
    
End Sub


以下補足情報。

フリガナ種類の定数

定数内容
2xlHiraganaひらがな
1xlKatakanaカタカナ
0xlKatakanaHalf半角カタカナ
3xlNoConversion無変換(謎)


フリガナ配置の定数

定数内容
1xlPhoneticAlignLeft左揃え
2xlPhoneticAlignCenter中央揃え
3xlPhoneticAlignDistributed均等割り付け
0xlPhoneticAlignNoControl指定なし


下線の定数

定数内容
-4142xlUnderlineStyleNone無し
2xlUnderlineStyleSingle下線
-4119xlUnderlineStyleDouble二重下線
4xlUnderlineStyleSingleAccounting下線(会計)
5xlUnderlineStyleDoubleAccounting二重下線(会計)
※会計用の下線はフリガナに使用不可。

以上。