- 締切済み
UserFormのTextBoxからフリガナも転記
こんにちは。 ご質問があります。 UserFormでTextBoxに名前を入力すると上のTextBoxにフリガナが自動で入力されるようになるまでは作成したのですがそれをシートに転記したときに漢字で書かれた方が転記されるセルと同じところにフリガナとして転記されるようにしたいのですが方法はございますか? 現在は隣のセルにフリガナを転記してるのですがUserFormを使わず、シートにそのまま打ち込んだ場合に、そのフリガナのセルにも手打ちで入力しなければならないといった感じで手間がかかります。 どうかお願いいたします
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
下記も参考までに書いてみます。エクセルVBAの固有の話として。 >転記されるセルと同じところにフリガナとして転記されるようにしたいのですが、からの発想です。 ーー メモ帳に田中 一郎と入力しました。 コピーして、エクセルシートのA20(どこでもよい)に貼り付けしました。 ご存知かもしれませんがメモ帳をコピー張り付けすると、フリガナ情報(入力時仮名変換情報はメモ帳が保持する仕組みでないため)はコピー先と遮断されます。それで無理に(メモ帳入力に)このようにしました。 そして標準モジュールに Sub test01() Range("A20").SetPhonetic Range("A20").Phonetics.Visible = True End Sub とし実行しましたら A20に漢字名 田中 一郎の上にカタカナ小字でフリガナが振られました。 質問ではTextBox1.TextでセルA20に漢字氏名の値をセットし、その後上記の コードを実行すれば、セル内にフリガナがセットされると思う。 このフリガナは入力時字のカナ漢字変換と関係なく、氏名漢字からIME辞書を参照して、一番適当と思われる読みを選んでセットしてくれるたものです。 ですから平凡な「明」のような漢字で「メイ」と読むのが正しいときなどは良くないかもしれないですが。 #2で書いておられることと思うがGetPhoneticも事情は同じです。
- zap35
- ベストアンサー率44% (1383/3079)
#02です >隣のセルにフリガナを転記してるのですが そのセルにTextBox2の内容を書き込めば良いのではありませんか? もし漢字で入力した値の「ふりがな」もTextBox2の値にしたかったら、フォームで入力した内容を「転記」する際に Target.Value = UserForm1.TextBox1.Text ’漢字表記を転記 Target.Phonetic.Text = UserForm1.TextBox2.Text ’漢字表記にふりがなを設定 Target.Offset(,1).Value = UserForm1.TextBox2.Text '隣のセルにふりがなを転記 を追加すればよいでしょう。(書き込むセルは「Target」で表しています)
お礼
ありがとうございます。 いろいろ勉強になります。 まだまだ勉強不足でほかの方が作成したものを数カ所変更して使用している段階ですので、こうすればいいんじゃないかというような発想は全くでてきませんでした。これからもっと勉強します。 試してみました。APIという方法でフリガナをふっていましがこちらの方法の方がわかりやすいです。 どうもありがとうございました。
- lark_0925
- ベストアンサー率63% (37/58)
Private Sub CommandButton1_Click() 行 = ActiveCell.Row 列 = ActiveCell.Column With Cells(行, 列 + 2) .Value = TextBox1.Text .Phonetics.Delete .Phonetics.Add 1, Len(.Value), TextBox5.Value End With Cells(行, 列 + 3).value = UserForm1.TextBox2.Value '会社名 Cells(行, 列 + 4).value = UserForm1.TextBox3.Value 'その他 Cells(行, 列 + 5).value = UserForm1.TextBox4.Value 'その他2 '必ず、プロパティは付ける事ですよ End Sub End Withが変なところ記述されていたので修正
お礼
ありがとうございます。 すばらしいです。できました。 これでフリガナの枠をなくすことができるうえ、漢字の部分だけで並び替えができるようになりました。 ほんとにありがとうございました。
- lark_0925
- ベストアンサー率63% (37/58)
Private Sub CommandButton1_Click() 行 = ActiveCell.Row 列 = ActiveCell.Column With Cells(行, 列 + 2) .Value = TextBox1.Text .Phonetics.Delete .Phonetics.Add 1, Len(.Value), TextBox5.Value End With Cells(行, 列 + 3).value = UserForm1.TextBox2.Value '会社名 Cells(行, 列 + 4).value = UserForm1.TextBox3.Value 'その他 Cells(行, 列 + 5).value = UserForm1.TextBox4.Value 'その他2 '必ず、プロパティは付ける事ですよ End Sub
- zap35
- ベストアンサー率44% (1383/3079)
ちょっとお試しください。UserFormにTextBox1、TextBox2の二つのテキストボックスを貼り付けます。以下のマクロでTextBox1に入力したテキストのふりがながTextBox2に表示されます Private Sub TextBox1_Change() TextBox2.Text = Application.GetPhonetic(TextBox1.Text) End Sub ただふりがなは「入力したとおり」にならない場合があります。 ですからTextBox2の方も表示しておいて、手で修正ができるようにしておけば良いですね
補足
ありがとうございます。 こちらの方法の場合、UserFormに入力したものをシートに転記した場合、表示されたフリガナも一緒に漢字のフリガナとして1つのセルに登録されるってことでしょうか?
- lark_0925
- ベストアンサー率63% (37/58)
コマンドボタン(Commandbutton1)クリックで アクティブシートのセルA1に名前とフリガナを設定する例です。 Private Sub CommandButton1_Click() With Range("a1") .Value = TextBox1.Text .Phonetics.Delete .Phonetics.Add 1, Len(.Value), TextBox2.Text End With End Sub 因みに >UserFormでTextBoxに名前を入力すると上のTextBoxにフリガナが自動で入力されるようになるまでは作成したのです ↑これは、API使用してのそれですか? それともapplication.GetPhoneticメソッド?
補足
APIといった方法です。 今、下記の方法でコマンドボタン1のクリックにしてあります。 Private Sub CommandButton1_Click() 行 = ActiveCell.Row 列 = ActiveCell.Column Cells(行, 列 + 2) = UserForm1.TextBox1.Value '氏名 Cells(行, 列 + 3) = UserForm1.TextBox2.Value '会社名 Cells(行, 列 + 4) = UserForm1.TextBox3.Value 'その他 Cells(行, 列 + 5) = UserForm1.TextBox4.Value 'その他2 Cells(行, 列 + 1) = UserForm1.TextBox5.Value 'フリガナ UserForm1.TextBox1.SetFocus Cells(行 + 1, 列).Select End Sub これをどのように変更したらいいのでしょうか? 無知で申し訳ありませんがよろしくお願いいたします。
お礼
ありがとうございます。 いろいろ勉強になります。 いままでUserFormを使って登録してしまった所の修正にはとても便利です。わざわざ打ち直さなくてもよさそうですね。 ほんとにありがとうございました。