![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
お世話になります。
今、あるシートに1つのマクロを登録してあります。
リストで選択した番号に従って指定したセルにカーソルを飛ばすというマクロです。
で、それとは別のセルに同じシートで郵便番号を入力したら隣のセルに住所を反映させるマクロを登録したいのですが
ここで入手したコードをコピペして範囲を修正したのですが
どうやら下記の文章が2つあるのがいけない(?)のでしょうか?
「コンパイルエラー名前が適切ではありません」と出てきます。
Private Sub Worksheet_Change(ByVal Target As Range)
このコマンド(?)は1つのシートに2つ存在してはいけないものなのでしょうか?
あと 出来れば L列に入力した郵便番号を参照してM列に都道府県名、N列に市町村名以降を反映させたいので
その方法もご教示いただければ幸いです。
どちらかだけでも結構です。
・エラーの原因、
・住所を反映させるマクロ
ご教示いただける方、宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
Private Sub Worksheet_Change(ByVal Target As Range)
(内容1)
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
(内容2)
End Sub
という状態になっているのでしょうか?
それでしたら、1つ目のマクロの最後に中身だけ貼り付けで大丈夫だと思います。
Private Sub Worksheet_Change(ByVal Target As Range)
(内容1)
(内容2)
End Sub
ご回答ありがとう御座います。
>という状態になっているのでしょうか?
お察しの通り、多分そんな状態です。
2個目の
>Private Sub Worksheet_Change(ByVal Target As Range)
>(内容2)
>End Sub
を貼り付けた瞬間に1個目と2個目の間に線が入って勝手に区切られたので感動していたのですが
それがいけなかったのでしょうか?
要は
>Private Sub Worksheet_Change(ByVal Target As Range)
>End Sub
上記の2つが同じシートにあってはいけないと解釈しましたが
この解釈で大丈夫ですか?
No.6
- 回答日時:
No3です。
マクロを利用すれば出きます。
A列に半角郵便番号を入力するとB列に全角郵便番号が表示及び選択状態になるので、
そのまま、「変換」キーを押せば住所変換されます。
※ B列は、入力規則→日本語入力→ひらがなに設定する
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Target.Value <> "" Then
Cells(Target.Row, 2) = StrConv(Target.Value, vbWide)
Cells(Target.Row, 2).Select
SendKeys "{F2}"
Else
Cells(Target.Row, 2) = ""
End If
End If
End Sub
ご回答ありがとう御座います。
郵便番号変換ウィザードを入れておけば ご教示いただいたマクロを
使わなくても この方法で出来るのでしょうか?
なぜか 出来てしまったのですが。。。
何かよく分かりませんが 無事に郵便番号から住所が反映されましたので
めでたしめでたしなのですが 何で出来たのかが分からず 少しばかりモヤモヤしています。
ありがとう御座いました。
No.5
- 回答日時:
反応させるセルやセル範囲が(Targetを判別するステップ)違うと思うのですが同じですか。
例えば先頭に
If Target.Column=1 Then
A処理のコード群
End If
If Target.Column=3 Then
B処理のコード群
End If
のようなことで、今までは済むと思ってましたが、すみわけは効きませんか。シートのセルに、コードのどちらの部分を処理するか処理FLAGを立ててそれを元にChangeイベントルーチンに飛んできたとき振り分けるとか。
>郵便番号を参照してM列に都道府県名、N列に市町村名以降を反映させたいので
郵便番号住所対応表は10数万行(レコード)があるようなので、アクセスのような利用を考えざるを得ないと思います。エクセルのMSクエリでどうですか。やったこと無いのですが。WEBにアクセスの例があったような。
ご回答ありがとう御座います。
他の回答者様の回答で解決できました。
お手数お掛けしました。
ちなみに
>シートのセルに、コードのどちらの部分を処理するか処理FLAGを立ててそれを元にChangeイベントルーチンに飛んできたとき振り分けるとか。
とか
>エクセルのMSクエリでどうですか
この辺は ほとんど 意味が理解出来ませんでした。。。。
No.4
- 回答日時:
>エラーの原因
おっしゃるとおり、同じ名前のプロシージャは同一シート内に存在できません。
この場合は、2つのマクロを1つのPrivate Sub Worksheet_Change(ByVal Target As Range)内に書いてしまえば良いと思います。
>住所を反映させるマクロ
郵便番号、都道府県名、市町村名を並べた一覧を別シートなどに作成しておけばできますね。関数を使うだけでも簡単にできます。
例えば、「住所」というシートにA列に郵便番号、B列に都道府県名、C列に市町村名を入力した一覧を作ったとします。
あとはM1に
=VLOOKUP(L1,住所!$A:$C,2)
N1に
=VLOOKUP(L1,住所!$A:$C,3)
を入力して、あとは必要な行数分コピーすればOKです。
ご回答ありがとう御座います。
>2つのマクロを1つのPrivate Sub Worksheet_Change(ByVal Target As Range)内に書いてしまえば良いと思います。
かしこまりました。ありがとう御座います。
>郵便番号、都道府県名、市町村名を並べた一覧を別シートなどに作成しておけばできますね。
なるほど!そういえばそうですね!
でも その準備の方が面倒じゃないですか?
ベクターか どこかに一覧みたいなのありますかね?
(または郵便局のHPでしょうか?)
一応、Vlookupぐらいは出来るので
>「住所」というシートにA列に郵便番号、B列に都道府県名、C列に市町村名を入力した一覧を作ったとします。
このシートが簡単に手に入れば その方が楽ですね。
No.3
- 回答日時:
こんにちは。
<エラーの原因>
No2さんの通りです。
<住所を反映させるマクロ>
以下を参考にしてください。
郵便番号変換ウィザード
http://www.morgan.co.jp/kiso/5excel-5.htm
郵便番号から住所を自動入力
http://dreamy.boy.jp/tec41.htm
ご回答ありがとう御座います。
一応、郵便番号変換ウィザードについては調べておりました。
すみません。書いておけば良かったですね。
(本当は書いておこうと思っていたのですが忘れてしまいました)
ウィザードだと「まとめて変換」になりますよね。
最悪それでもいいのですが、そうやって諦める前に何とかならないかなぁ?
と思いこちらで質問を立てました。
下のURLも一応 調べてはあったのですが 何か「両方に入力しないといけないのかなぁ?」
と思い、他の方法を探しておりました。
>郵便番号から住所を自動入力
の方法で郵便番号を1回しか入力しないで出来る方法が可能でしょうか?
出来れば再登場お願いします。
No.1
- 回答日時:
>・エラーの原因
>どうやら下記の文章が2つあるのがいけない(?)のでしょうか?
そのとおりだと思いますが、どんな記述の仕方をしてるのかコードの提示
がないので具体的な説明は出来ません。
説明できるのは、↓くらいかな。
TargetのAddressやRow、Columnなどのセル範囲か、TargetのValue、Formula、Textなどで
条件分岐してはいかがでしょう?
ご回答ありがとうございます。
>TargetのAddressやRow、Columnなどのセル範囲か、TargetのValue、Formula、Textなどで
>条件分岐してはいかがでしょう?
すみません。。。。
おっしゃる意味が丸でわかりません。。。。
>どんな記述の仕方をしてるのかコードの提示がないので
これにつきましては「何が書いてあるか理解してない」ので、どこから
どこまでを ここに貼ればいいのか分からないので。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Excel(エクセル) 【VBA】A列の指定した値と同じ行にあるD列の値を順番にコピペするマクロについて 4 2023/02/01 18:16
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
A1セルに入力したら、入力時間をA2セルに自動挿入
Excel(エクセル)
-
同じシート内にイベントプロシージャが二つある時
Excel(エクセル)
-
セルをクリック⇒そのセルに入力された文字を○で囲む
Excel(エクセル)
-
-
4
End Sub が必要です。
Access(アクセス)
-
5
エクセルのセルにカレンダーを表示させ、日付をセルに入力させたい
Excel(エクセル)
-
6
別シートのマクロを実行する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
エクセル マクロ オートフィ...
-
excelのデータで色つき行の抽出...
-
[EXCEL]ボタン押す→時刻が表に...
-
excel 小さすぎて見えないセル...
-
A1に入力された文字列と同じ文...
-
Excel グラフのプロットからデ...
-
エクセル 上下で列幅を変えるには
-
【Excel関数】UNIQUE関数で"0"...
-
エクセル2016で時間を入力して...
-
エクセル マクロで数値が変っ...
-
特定の文字がある行以外を削除...
-
エクセルのセルに指定画像(.jpg...
-
結合しているセルへのオートフィル
-
Excel 時刻の並び替え
-
このような複雑な表をワードで...
-
電話番号の入力方式が違うデー...
-
エクセル 時間の表示形式AM/PM...
-
結合されたセルをプルダウンの...
-
VBA アクティブ行の削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセル マクロ オートフィ...
-
[EXCEL]ボタン押す→時刻が表に...
-
AのセルとB行を比較して、一致...
-
特定の文字がある行以外を削除...
-
エクセル 上下で列幅を変えるには
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
excelのデータで色つき行の抽出...
-
結合されたセルをプルダウンの...
-
アクティブになっている行をマ...
-
VBAで色の付いているセルの行削除
-
セルの色によって条件文をつけ...
-
excel 小さすぎて見えないセル...
-
電話番号の入力方式が違うデー...
-
Excelでカタカナ・ひらがな・英...
-
エクセルVBA 最終行を選んで並...
-
EXCELマクロを使い、空白行では...
-
EXCELで最後の行を固定
おすすめ情報