「フリガナ」の欄に入力 の続き

昨日は、名前の読みが当て字の場合の、「フリガナ」欄の入力方法について検討してみした。
infoment.hatenablog.com

今日は、昨日の続き。
f:id:Infoment:20190708222235p:plain

まず起動方法だが、出来るだけ簡単な方が良い。そこで、シートの右クリックイベントに設定してみた。ついでに、「名前」と書かれたセル(A2)の右クリックで、入力欄をリセットしてみよう。

f:id:Infoment:20190708222648p:plain

シートモジュール
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Select Case Target(1).Address(0, 0)
        Case "A2"
            Range("B2") = vbNullString
            Cancel = True
        Case "B2"
            NameInputForm.Show
            Cancel = True
    End Select
End Sub

f:id:Infoment:20190708222853g:plain

入力済みの場合、或いは一部参照したい場合、入力済みの内容をユーザーフォーム側に転記しておきたい。そこで、ユーザーフォームの初期化時に転記してみる。

ユーザーフォーム(NameInputForm)
Dim NameRange As Range
Dim FuriganaRange As Range
Private Sub UserForm_Initialize()
    Set NameRange = Range("B2")
    Set FuriganaRange = Range("B1")
    
        ' 入力済み内容をフォームに転記することで、
        ' 入力の一助とする。
        If NameRange <> vbNullString Then
            NameTextBox = NameRange
            FuriganaTextBox = FuriganaRange
        End If
End Sub

f:id:Infoment:20190708224101g:plain

残りは昨日と同じだが、念のため再掲。上記同様、ユーザーフォームに記載する。

Private Sub InputCommandButton_Click()
    If CheckBlank Then
        NameRange = NameTextBox ' 氏名入力用テキストボックス
        AddPhonetic NameRange, _
                    FuriganaTextBox ' フリガナ入力用テキストボックス
        Unload Me
    End If
End Sub
Sub AddPhonetic(target_range As Range, kana_to_add As String)
    target_range.Characters.PhoneticCharacters = kana_to_add
End Sub
Private Property Get CheckBlank() As Boolean
    Dim Control As Msforms.Control
        For Each Control In Me.Controls
            If TypeName(Control) = "TextBox" Then
                If Control.Object.Value = vbNullString Then
                    CheckBlank = False
                    Exit Property
                End If
            End If
        Next
        CheckBlank = True
End Property

f:id:Infoment:20190708224646g:plain

後は、氏名とフリガナのテキストボックスを取り違えないよう、フリガナ側のテキストボックスのIME MODEをカタカナにしておくと良いかも。
f:id:Infoment:20190708224858p:plain

でも、ここまで作りこんで見せてみても、帳票の所管部門には採用されないんだろうな、きっと。

参考まで。