• ベストアンサー

エクセルのvbaでのふりがなについて…

年賀状のために住所録を作成しているのですが、 住所から簡単に郵便番号を表示できるようにしたいと考えています。 いろいろ調べた結果、アドインのウィザードを使えばできるのは わかっているのですが…それとは別の方法で 住所を7桁の郵便番号で打ち込み、それを辞書ツールで変換して住所を作り、 その部分の振り仮名をphonetic関数で表示すれば郵便番号が 出力できることがわかりました。 しかし、これを今度vbaのユーザーフォームで入力した場合… 住所の部分をユーザーフォームのテキストボックスで入力し、 その住所の振り仮名を隣のセルに出力させようと思ったのですが、 textbox1 = cell(1,2).value の形で持ってくるきた上でエクセルのA1セルに =phonetic(A2) という表示をつけても振り仮名情報までは維持されないようで 振り仮名が表示できなくなってしまいました。 VBAのテキストボックスの中の文字の振り仮名情報などを エクセルのセルなどに転用できるような方法などあるのでしょうか? 説明下手ですみません…わかりにくいと書いていただければ また補足を付け足していこうと思うので… なにとぞ回答のほどよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

PHONETICの仕組みを知らないから、こういう質問になるのだ。 フリガナは、エクセルのシートに向かって仮名漢字変換システムを使って、漢字文字列を入力したときにエクセルは、入力されたカナ・かなをエクセルのシートのセルに覚えるのだ。 セルの属性の1つだが、セルの「値」ではない。 ーー cell(1,2).valueの.valueは文字通り「セルの値」であって、こんなものを代入しても、フリガナが入るわけが無い。 このことが1つ。 ーー もうひとつ、エクセルにデータがあっても、VBAで Cells(1,1)="田中"とすると仮名漢字変換を通っていないので フリガナ情報はセットされない。 そのほかにも他ソフトからデータをインポートしたり、コピー したりすると、同じようなことになる。年賀状ソフトには振り仮名の仕組みが無いか、エクセルとは違う点がある方式だから。 ーー 上記の場合でも、別の道で「田中」という漢字から、タナカを割り出す方法がある。 標準的NO1の頻度の読みになってしまう ーーー 例データA1,B1,C1 田中 田中 タナカ B1の関数 =PHONETIC(A1) Å1 の値は下記VBAででセット C1は下記でセット B1はタナカにならず、田中であることに注意。 Sub test01() Cells(1, 1) = "田中" Cells(1, 3) = Application.GetPhonetic(Range("A1")) End Sub GetPhoneticは、Applicationとはエクセルのこと。他のソフトはもちろんVBでは使えないかもしれないので注意。

masuoooh
質問者

お礼

ありがとうございます! 始めは=phoneticはカタカナを割り出すものだと思っていたのですが… 変換するときの情報を扱っていたのですね… Application.GetPhoneticという言葉を使用することで 簡単に処理をすることができました!! いろいろ解説までしていただきありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 細かなエラー処理はなされていませんが、こういうことでしょうか。 ただし、IMEのバージョンとOffice のバージョンによって動かないことがあります。 TextBox1 に、郵便番号を入れて、Enter を入れるとセルに郵便番号が入り、もう一度Enter を入れると、その変換文字が、右横のセルに入ります。 本来は、検索システムを使って、郵便番号から変換するのが良いのです。WinArrowさんという方が出している郵便番号変換はフリーでは有名です。他は、郵便番号ウィザードから、郵便番号検索エンジンを使えればよいのですが、プロテクトが入っているので使えません。有償のものは高いので、仕事でもなければ買わないです。 '------------------------------------------- 'Option Explicit Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)   Dim buf As Variant   If KeyCode <> 13 Then Exit Sub   With Cells(Rows.Count, 1).End(xlUp).Offset(1)     buf = TextBox1.Value     If Len(buf) = 8 And IsNumeric(Left(buf, 1)) Then       .Value = buf       ChangeZip .Cells(1)       '変換されなかったときにエラー処理       If Not TextBox1.Value Like "[一-龠]*" Then        .Value = ""       End If     Else       If Len(Left(buf, 1)) <> LenB(StrConv(Left(buf, 1), vbFromUnicode)) Then         .Offset(-1, 1).Value = TextBox1.Value       End If     End If   End With   TextBox1.Value = "" End Sub Function ChangeZip(rng As Range) With rng.Validation '入力規則    .Delete    .Add Type:=xlValidateInputOnly    .IMEMode = xlIMEModeHiragana 'IME立ち上げ End With     rng.Select     SendKeys rng.Value '番号を入れる     SendKeys "{ }" '変換     SendKeys "{ENTER}"     SendKeys "{LEFT}"     SendKeys "{DOWN}" End Function

masuoooh
質問者

お礼

わざわざありがとうございます!! なんか…すごい・・・ ここまでの次元では考えてなかったので…脱帽です。 こんなこともできるのですね… ここに掛かれていることを勉強するだけでもすごくためになりました!! ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。
  • j38
  • ベストアンサー率22% (9/40)
回答No.1

textbox=...の前の行に msgbox (cell(1,2).value) とやると 何が表示されます?

masuoooh
質問者

お礼

いろいろ他の項目を見て解決いたしました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCELのVBAでフリガナ入力

    フォームのテキストボックスで「text名前」に漢字で入力すると「textフリガナ」に自動的にフリガナが入力されるようにしたいと思っています。 phonetic関数を使って、セルを介在させて試してみましたが、「text名前」の値をセルに格納した時点でフリガナ情報が落ちてしまうらしく、カタカナのフリガナが返ってきません。 なにか良い方法があるのでしょうか?ご教示ねがいます。

  • 郵便番号→住所→住所のふりがな、のやり方教えてください。

    WIN98、エクセル2000を使っています。 アンケートの入力の雛型を作っていますが、 セルAに郵便番号を入れてセルBに住所を一発で出し、さらにセルCにその住所のふりがなも同時に出せるようにはできないのでしょうか? もちろんセルの順番はどうでもいいです。できればこの順番がいいけれど・・・。 LEFTとPHONETICを使って、住所欄から郵便番号は出せるようにしたのですが、どうも下4桁に該当がない場合など、郵便番号自体不正確になったりします。 何か良い方法はないでしょうか。 また、日付を入れる時、例えば、「0720」という入力だけで「07/20」と表示できる方法もあったら、あわせて教えてください。 どうもいろいろやったのですが、結局入力時に/を叩かないと、正しく表示されません。単にスラを入れるのが苦手なだけで、丁寧に入れればそう手間的に変らないのでいいのですが・・・。 よろしくお願いします。特にフリガナの方・・・。 エクセルは初心者なので、申し訳ない、詳しく優しくお願いしまーす! (初心者のクセに仕事受けてはいけません、って言わないで~!)

  • VBAユーザーフォームで

     エクセルVBAでユーザーフォームより、テキストボックスで入力させたものをセルに表示させようとしています。  テキストボックスは1と2があり、テキストボックス1で入力した値の最初の5文字+固定値をテキストボックス2に自動で入力(表示)したいのですがなかなかうまくいきません。(自動入力後、手動で一部修正します。)  VBAをはじめたばかりの初心者ですが、どうぞよろしくお願いします。

  • VBAユーザーフォームで郵便番号から住所変換するには?

    会社で顧客リストを作成しているのですが、エクセルではじめてVBAを利用しようと思い、ユーザーフォームを使って連続登録までのマクロコードは入力出来たのですが、テキストボックスに郵便番号を入力すると自動的に次のテキストボックスに住所が入力されるようにするには、どのようなコードを追加すればよいのでしょう?

  • エクセルVBAで郵便番号から住所を

    流れ (1)テキストボックス1に郵便番号7桁を入力 (2)コマンドボタン1(検索)をクリック (3)テキストボックス2に住所表示 上記のような流れで行いたいのです。セルに入力ではなく 入力フォームを作成してボックスやボタンを配置して作成したいのですが できますでしょうか??

  • Excel2002のふりがな

    関数 =PHONETIC(セル番号) をつかって、フリガナを振っています。 手書き入力パッドで挿入した漢字にフリガナがふれません。 修正しようにも、ボックスが表示されません。 漢字だと認識されていないのでしょうか。 「ふりがな」の場所に、漢字のまま表示されます。 書式→ふりがな→編集で修正しようにも、その漢字にはボックス自体がありません。 単語登録をしてみましたが、同じでした。 方法はないのでしょうか? どうぞ宜しくお願い致します。

  • エクセルでのフリガナについて

    エクセルで一つのセルに入力した住所を、都道府県と区・市・郡とそれ以下の3つに分離し それぞれにフリガナをふりたいのです。 3つに分割まではSUBSTITUTE関数を使って出来たのですが、 その後PHONETIC関数を使ったらフリガナが表示されませんでした。 何かいい方法はないでしょうか? 例:「東京都千代田区永田町○丁目○番」                            ↓分割しフリガナをふる   「東京都」   「千代田区」 「永田町」 「○丁目○番」   「トウキョウト」「チヨダク」 「永田町」 「○チョウメ○バンチ」 のようにしたいのです。 よろしくお願いします。

  • EXCEL VBA ユーザーフォームの大きさについて

    EXCEL VBAでユーザーフォームの大きさが表示画面より 大きくなったため、下の表示されない部分のテキスト ボックス等に入力出来ません。対処法はありますか。

  • PHONETIC関数でフリガナが表示されない

    本の付録のエクセルデータの名簿に フリガナ表示をさせてみたくなり エクセルPHONETIC関数を使ってみたのですが フリガナが表示されません。 表示されたのはフルガナではなく、元の漢字で表示されました。 PHONETIC関数は?と思い 求めたセルをクリックするとPHONETIC関数が入っていましたが・・ もしやと思い 欄外に新たに氏名を入力して PHONETIC関数を求めるとフリガナ(PHONETIC関数)が表示がされます。 一度作成したデータなどを開いて フリガナ表示はできないのでしょうか? まるでロックがかかったみたいな感覚なのですが。

  • フリガナ検索について

    同じような質問があったらすみません。 過去質問も見ましたが、あまりよく理解できなかったので質問させていただきます。 顧客名簿のフリガナ検索をしたいのです。 テーブルには顧客情報に必要な、名前 フリガナ 住所 電話番号 とあり、フォームもそのテーブルを元に作成しています。 そして、そのフォームにテキストボックスをつくり、コマンドボタンで 実行をしたいのです。表示方法はフォームで・・・・。 例えば「サトウ」とテキストボックスに入力し、コマンドボタンを押すごとに、「サトウ」の苗字の人がフォームで次々と表示されるようなのが理想です。 お時間があるときに、教えていただけないでしょうか? 宜しくお願い致します。

MFC-J907DN エラー画面の消し方
このQ&Aのポイント
  • ネットワーク接続エラー03の解消方法
  • Windows10でのMFC-J907DNの接続方法
  • クラウドへの接続時に発生するエラー画面の解消方法
回答を見る

専門家に質問してみよう