7/26に下記の質問をしまして、Wendy02さんからURLを教えてもらい、一時は解決したのですが、
すみません、特定のセル1ケ所に入力し、それを特定のセル同じく1ケ所に表示するにはどのようにするとよいのでしょうか?
VBAを作ってみましたが、上手く動きません。。。(>_<)
どこかが間違っているのだと思うのですが・・・・・・
よろしくお願いします。
⇒エクセルで、例えばA1に123456と入力したら、B1に
それに対応する住所が表示されるようにしたい。。
Excel アドイン: 郵便番号変換ウィザードがあるのは知っていますが、
これを利用しないで、IMEの郵便番号変換機能を利用して、関数で、あるいはVBAで表示できるようにしたいのですが、可能でしょうか??
(IMEのプロパティの辞書/学習は「郵便番号辞書」にチェックはついています。為念)
★回答⇒Wendy02さんから↓↓↓
http://oshiete1.goo.ne.jp/kotaeru.php3?qid=3191662
<作ってみたVBA>
Private Sub Worksheet_Change(ByVal Target As Range)
'IMEは、MS-IME に限る
Application.ScreenUpdating = False
With Range("B7") '入力規則
.Delete
.IMEMode = xlIMEModeHiragana 'IME立ち上げ
End With
Application.EnableEvents = False
Range("D7").Select
SendKeys Target.Value '番号を入れる
SendKeys "{ }" 'スペース変換
SendKeys "{ENTER}"
SendKeys "{LEFT}"
SendKeys "{DOWN}"
settei:
Application.ScreenUpdating = True
End Sub
No.3ベストアンサー
- 回答日時:
こんにちは。
Wendy02です。まず、郵便番号変換ユーティリティの周辺の事情を、他の方にも読める形で書いておきます。
>Excel アドイン: 郵便番号変換ウィザードがあるのは知っていますが、
>これを利用しないで、IMEの郵便番号変換機能を利用して、関数で、あるいはVBAで表示できるようにしたいのですが、可能でしょうか??
アドイン自体よりも、この郵便変換ウィザードの郵便変換エンジン(MSYubin7.DLL)は生きているのですが、再利用されることをメーカー側が嫌って、4~5年前に、アドイン・プログラムにプロテクトをしてしまいました。ですから、それ以前の製品は、関数で変換が可能です。何名かの雑誌などでも名の知れた人たちが、MSにクレームをつけましたが、結局、変わりませんでした。
他人に渡したらライセンス違反になりますが、もし、古いパソコンなどに残っていたら、そのエンジンは使えるのではないかと思います。ただ、API関数から、関数を作りますから、かなり詳しい人でないと、設定は難しいです。
この製作会社は、「アドバンスソフトウェア株式会社」というところで、製品版としては関数変換は使えます。ただし、3万円以上もするものです。
製品名
Yubin7
http://www.adv.co.jp/products/product_Yubin7.htm
他にも、Vector で、いくつか出ていたと思いますが、私個人としては、Office で個人で出しているものは、以前試したときは、PCのスペックが低かったので、とても、Yubin7 の変換スピードに追いつくものはありませんでした。データベースで再編成した辞書を利用して、VBAから、ADOやDAOで使うというのが、最も、実行可能な関数だと思います。今は分かりませんが、ADO等で使用可能な郵便番号辞書を、郵便番号辞書を出している人がいたような気がします。
他にも、Access 2000 のACWZZIP.MDE を再利用する方法などもありましたが、これも、上位バージョンではユーザーの再利用は適わなくなってしまいました。
私を含めた大勢の人たちが、このユーティリティについては考えてきたわけですが、どうも、メーカー側では、ユーザーの利便性より利益を優先させてしまったわけです。もしかしたら、Moug のダウンロード・ユーティリティで出ているのかもしれませんが、私は分かりません。
Office のアドインのオリジナルメーカー数社をみていると、不都合さを解消した製品を出してはいても、MS-Office の値段に匹敵するものしかないという、不条理としかいえない製品を、エンド・ユーザーに提供するだけになってしまっています。
私自身も、現在のところ、開発力が伴わないので、Office VBA周辺でしかいじることが出来ないから、こんな結果になっています。こんなものしか提供できない、何か、とても悔しい気持ちです。
本来は、アドバンス社は、中身自体を変えているわけではありませんから、単に、昔のようにユーザーに解放してくれるだけでよいのですが。
マクロについてですが、ご期待に沿えるものとはいえませんが、以下のように直してみまそた。
入力側は、A1, 変換側は、CONST SEL... B1
となっています。
シートモジュール
-------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'設定場所
Const SEL As String = "B1"
'MS-IMEの辞書は、郵便番号辞書にチェック
If Target.Address <> "$A$1" Then Exit Sub 'A1でなかったら、取りやめ
If Target.Rows.Count > 1 Then Exit Sub
If Len(Target.Value) <> 8 Then Exit Sub
If InStr(Target.Value, "-") = 0 Then Exit Sub
Application.ScreenUpdating = False
With Range(SEL).Validation '入力規則
.Delete
.Add Type:=xlValidateInputOnly
.IMEMode = xlIMEModeHiragana 'IME立ち上げ
End With
Application.EnableEvents = False
Range(SEL).Select
Application.EnableEvents = True
SendKeys Target.Value '番号を入れる
SendKeys "{ }" '変換
SendKeys "{ENTER}"
settei:
Application.ScreenUpdating = True
End Sub
お盆で帰省していましてご返事が遅くなりました事をお詫び申し上げます。<m(__)m>
Wendy02,たびたびのご回答大変ありがとうございます。
A1セルに入力⇒B1に応答されました。。。。
もしB5に入力⇒D5に応答なら、VBAのそれぞれのセルの部分を編集すればよろしいのですよネ~
私はまだVBAをかじったばかりで、まだ満足のいく形になっていませんですが、仕事上色々要望がありまして、その都度困った事が時々発生しております。
今回のはセルが固定している場合でして、前回ご回答いただいておりながら編集してみますと思うように動かなくて困っていました。。
大変助かりました。ありがとうございます。
シッカリ役立たせていただきます。
No.2
- 回答日時:
何度も回答者を煩わせているのは
(1)質問者のニーズが、現状システムからは特殊
(2)結果をだす、処理単位の明確な意識と
質問文章にその説明が無いこと
にあると思います。
(2)は
X.オフラインバッチ的な処理
Y.瞬時反応的な処理
どちらを選ぶ場合なのか。
前質問まではXの路線だったが、今回は、実はY路線だったといっている。
それに
Z.新たに作る
U.既存の操作をキー・シュミレートする
V.出来合いのソフトやルーチンを入手する
のu.のタイプが加わっている。
Uはあくまで例外的な処理で、IME漢字変換も、関連APIを勉強すれば、処理できそう(私は詳しくない)なので、できればそちらに向かうべきでは。Uは袋小路の凌ぎです。
そして、その都度回答者のお世話にならないといけなくなっている
ーー
A
(1)は郵便番号を入れるセル(列は一定)にとりあえず全部入れて
、一度に住所を割り出し全セルにセットする。
こういうのをオフラインバッチ処理という。
B
1つのセルに郵便番号数字を入れて、変換キーを押して、住所漢字変換
の機能があるのでそれを使う。
これは個別操作による普通の処理。プログラムでの自動処理や関数(次記)のように前もって入れておいて、結果が返るものではない。
C
関数によって実現。
エクセルではそういう関数は無い以上、自分で作るしかない。
しかし通便番号ファイルの構造の知識と、そこから検索するプログラムを作る知識がないといけない。また一般的には使われるかどうか判らない、10数万件の郵便番号ー住所辞書を読み込んでおいて、データベース検索システムに待機させるのは、リソース的に不経済である。
(今回の質問のニーズでは、関数では)さらに入力したとき即時実行されるというイベントの処理が必要。
質問の実現には、役立たないが、上記のことはあらゆる課題を考える上でいつも明確に意識し、ある程度は妥協(グレードダウン)した途で我慢すべきなのだと思う。
No.1
- 回答日時:
もとのオリジナルのコードに一旦戻って、
Target.Column <> 1
を
Target.Address <> "$B$7"
に変更し、
2箇所の
Target.Offset(0, 1)
を
Range("D7")
に変更し、
最後に
SendKeys "{LEFT}"
SendKeys "{DOWN}"
を取り除く。
これで試してみてください。
B7に入力し、D7に出力する場合です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelでASCを使って全角を半角...
-
作成した数式を値として表示し...
-
Excel関数について教えてくださ...
-
Excel関数について教えてくださ...
-
条件付き書式設定で罫線を引き...
-
エクセルのセル内に分数などの...
-
エクセルの質問です。 F列からL...
-
Microsoft 365Excelの見開きペ...
-
ワークシートに出現したこの画...
-
エクセルの文字が途中から消える
-
Excelの警告について
-
タイムスタンプとテキストから...
-
シートの情報を別のシートへま...
-
マクロの処理が遅くなった
-
エクセルの数式バーのフォント...
-
Excelでの文字色
-
エクセルデーターから必要な項...
-
Excelの数字の前に入っている空...
-
excel2003 マクロボタンが押せない
-
エクセルでファイルの最終更新...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
Excelで数値を時間数に変換する...
-
エクセルの数式バーのフォント...
-
エクセルで数字の組み合わせを...
-
エクセルを使用して、円周率を...
-
Excelで特定の文字列が含まれて...
-
Excel 対象のセルに入力が無い...
-
任意の値が存在する行に名前を...
-
エクセルでファイルの最終更新...
-
index関数の説明をお願いします。
-
条件付き書式でやりたいのですが
-
重複しない値を取り出したい
-
【ExcelVBA】UTF-8(BOM無)でC...
-
【マクロ】マクロが割当てされ...
-
エクセル IF計算式?でしょうか?
-
エクセルで曜日を入れたい
-
表中の指定した条件の文字列を...
-
【Excel】版が同じ事を示す番号...
-
EXCELの散布図で日付が1900年に...
-
Excelについて。Excelに縦1列に...
おすすめ情報