
年賀状のために住所録を作成しているのですが、
住所から簡単に郵便番号を表示できるようにしたいと考えています。
いろいろ調べた結果、アドインのウィザードを使えばできるのは
わかっているのですが…それとは別の方法で
住所を7桁の郵便番号で打ち込み、それを辞書ツールで変換して住所を作り、
その部分の振り仮名をphonetic関数で表示すれば郵便番号が
出力できることがわかりました。
しかし、これを今度vbaのユーザーフォームで入力した場合…
住所の部分をユーザーフォームのテキストボックスで入力し、
その住所の振り仮名を隣のセルに出力させようと思ったのですが、
textbox1 = cell(1,2).value
の形で持ってくるきた上でエクセルのA1セルに
=phonetic(A2)
という表示をつけても振り仮名情報までは維持されないようで
振り仮名が表示できなくなってしまいました。
VBAのテキストボックスの中の文字の振り仮名情報などを
エクセルのセルなどに転用できるような方法などあるのでしょうか?
説明下手ですみません…わかりにくいと書いていただければ
また補足を付け足していこうと思うので…
なにとぞ回答のほどよろしくお願いします。
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では使えないかもしれないので注意。
ありがとうございます!
始めは=phoneticはカタカナを割り出すものだと思っていたのですが…
変換するときの情報を扱っていたのですね…
Application.GetPhoneticという言葉を使用することで
簡単に処理をすることができました!!
いろいろ解説までしていただきありがとうございます。
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
わざわざありがとうございます!!
なんか…すごい・・・
ここまでの次元では考えてなかったので…脱帽です。
こんなこともできるのですね…
ここに掛かれていることを勉強するだけでもすごくためになりました!!
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの住所から郵便番号を表示するには 2 2022/09/01 16:18
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- その他(ビジネス・キャリア) 国税庁法人番号公表サイトの検索で会社の名前入れて所在区や郵便番号入れて情報が出てこない 2 2023/04/30 10:00
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- 警察・消防 逮捕されてた可能性があったのでしょうか? 5 2023/01/25 12:11
- Access(アクセス) 【至急・画像あり】建物or住所から電話番号を出す方法を教えてください 3 2023/02/17 11:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaで、別シートの最下...
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定のセルが空白だったら、そ...
-
Excelのプルダウンで2列分の情...
-
【Excel VBA】指定行以降をクリ...
-
VBA実行後に元のセルに戻りたい
-
EXCELのVBA-フィルタ抽出後の...
-
Excelで指定した日付から過去の...
-
セル色なしの行一括削除
-
指定した条件で行セルを非表示...
-
Excel vbaで特定の文字以外が入...
-
VBAでセルをクリックする回...
-
連続する複数のセル値がすべて0...
-
VBからEXCELのセルの値を取得す...
-
エクセルvba:自己セルの情報取...
-
Excel VBAで、 ヘッダーへのセ...
-
vbsのセル値の取得について
-
Excel ユーザーフォームをモー...
-
共有フォルダからのファイル名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定のセルが空白だったら、そ...
-
Excelのプルダウンで2列分の情...
-
【Excel VBA】指定行以降をクリ...
-
任意フォルダから画像をすべて...
-
VBAでセルをクリックする回...
-
”戻り値”が変化したときに、マ...
-
VBA実行後に元のセルに戻りたい
-
Excel vbaで特定の文字以外が入...
-
【VBA】シート上の複数のチェッ...
-
Excel VBA マクロ ある列の最終...
-
Excel VBAで、 ヘッダーへのセ...
-
DataGridViewの各セル幅を自由...
-
VBからEXCELのセルの値を取得す...
-
EXCELのVBA-フィルタ抽出後の...
-
VBAでセル同士を比較して色付け
-
Application.Matchで特定行の検索
おすすめ情報