
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルに写真が貼れない(フ...
-
エクセルのライセンスが分かり...
-
【マクロ】実行時エラー '424':...
-
vba テキストボックスとリフト...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
他のシートの検索
-
【マクロ】【配列】3つのシー...
-
エクセルシートの見出しの文字...
-
セルにぴったし写真を挿入
-
【関数】3つのセルの中で最新...
-
LibreOffice Clalc(またはエク...
-
【マクロ】excelファイルを開く...
-
勤怠表について ABS、TEXT関数...
-
Excelに貼ったXのURLのリンク...
-
【マクロ】【画像あり】❶ブック...
-
【Officer360?Officer365?の...
-
【関数】=EXACT(a1,b1) a1とb1...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報