dポイントプレゼントキャンペーン実施中!

お世話になります。

今、あるシートに1つのマクロを登録してあります。
リストで選択した番号に従って指定したセルにカーソルを飛ばすというマクロです。

で、それとは別のセルに同じシートで郵便番号を入力したら隣のセルに住所を反映させるマクロを登録したいのですが
ここで入手したコードをコピペして範囲を修正したのですが
どうやら下記の文章が2つあるのがいけない(?)のでしょうか?
「コンパイルエラー名前が適切ではありません」と出てきます。

Private Sub Worksheet_Change(ByVal Target As Range)

このコマンド(?)は1つのシートに2つ存在してはいけないものなのでしょうか?

あと 出来れば L列に入力した郵便番号を参照してM列に都道府県名、N列に市町村名以降を反映させたいので
その方法もご教示いただければ幸いです。

どちらかだけでも結構です。
・エラーの原因、
・住所を反映させるマクロ

ご教示いただける方、宜しくお願い致します。

A 回答 (6件)

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
    • good
    • 0
この回答へのお礼

ご回答ありがとう御座います。

>という状態になっているのでしょうか?
お察しの通り、多分そんな状態です。
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つが同じシートにあってはいけないと解釈しましたが
この解釈で大丈夫ですか?

お礼日時:2008/10/17 20:56

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
    • good
    • 0
この回答へのお礼

ご回答ありがとう御座います。

郵便番号変換ウィザードを入れておけば ご教示いただいたマクロを
使わなくても この方法で出来るのでしょうか?

なぜか 出来てしまったのですが。。。

何かよく分かりませんが 無事に郵便番号から住所が反映されましたので
めでたしめでたしなのですが 何で出来たのかが分からず 少しばかりモヤモヤしています。

ありがとう御座いました。

お礼日時:2008/10/20 15:36

反応させるセルやセル範囲が(Targetを判別するステップ)違うと思うのですが同じですか。


例えば先頭に
If Target.Column=1 Then
A処理のコード群
End If
If Target.Column=3 Then
B処理のコード群
End If
のようなことで、今までは済むと思ってましたが、すみわけは効きませんか。シートのセルに、コードのどちらの部分を処理するか処理FLAGを立ててそれを元にChangeイベントルーチンに飛んできたとき振り分けるとか。
>郵便番号を参照してM列に都道府県名、N列に市町村名以降を反映させたいので
郵便番号住所対応表は10数万行(レコード)があるようなので、アクセスのような利用を考えざるを得ないと思います。エクセルのMSクエリでどうですか。やったこと無いのですが。WEBにアクセスの例があったような。
    • good
    • 0
この回答へのお礼

ご回答ありがとう御座います。

他の回答者様の回答で解決できました。

お手数お掛けしました。

ちなみに
>シートのセルに、コードのどちらの部分を処理するか処理FLAGを立ててそれを元にChangeイベントルーチンに飛んできたとき振り分けるとか。

とか
>エクセルのMSクエリでどうですか

この辺は ほとんど 意味が理解出来ませんでした。。。。

お礼日時:2008/10/20 15:23

>エラーの原因



おっしゃるとおり、同じ名前のプロシージャは同一シート内に存在できません。
この場合は、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です。
    • good
    • 0
この回答へのお礼

ご回答ありがとう御座います。

>2つのマクロを1つのPrivate Sub Worksheet_Change(ByVal Target As Range)内に書いてしまえば良いと思います。
かしこまりました。ありがとう御座います。

>郵便番号、都道府県名、市町村名を並べた一覧を別シートなどに作成しておけばできますね。
なるほど!そういえばそうですね!
でも その準備の方が面倒じゃないですか?
ベクターか どこかに一覧みたいなのありますかね?
(または郵便局のHPでしょうか?)

一応、Vlookupぐらいは出来るので
>「住所」というシートにA列に郵便番号、B列に都道府県名、C列に市町村名を入力した一覧を作ったとします。
このシートが簡単に手に入れば その方が楽ですね。

お礼日時:2008/10/17 21:12

こんにちは。



<エラーの原因>
No2さんの通りです。

<住所を反映させるマクロ>
以下を参考にしてください。

郵便番号変換ウィザード
http://www.morgan.co.jp/kiso/5excel-5.htm

郵便番号から住所を自動入力
http://dreamy.boy.jp/tec41.htm
    • good
    • 0
この回答へのお礼

ご回答ありがとう御座います。

一応、郵便番号変換ウィザードについては調べておりました。
すみません。書いておけば良かったですね。
(本当は書いておこうと思っていたのですが忘れてしまいました)

ウィザードだと「まとめて変換」になりますよね。
最悪それでもいいのですが、そうやって諦める前に何とかならないかなぁ?
と思いこちらで質問を立てました。

下のURLも一応 調べてはあったのですが 何か「両方に入力しないといけないのかなぁ?」
と思い、他の方法を探しておりました。

>郵便番号から住所を自動入力
の方法で郵便番号を1回しか入力しないで出来る方法が可能でしょうか?

出来れば再登場お願いします。

お礼日時:2008/10/17 21:05

>・エラーの原因



>どうやら下記の文章が2つあるのがいけない(?)のでしょうか?

そのとおりだと思いますが、どんな記述の仕方をしてるのかコードの提示
がないので具体的な説明は出来ません。

説明できるのは、↓くらいかな。

TargetのAddressやRow、Columnなどのセル範囲か、TargetのValue、Formula、Textなどで
条件分岐してはいかがでしょう?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>TargetのAddressやRow、Columnなどのセル範囲か、TargetのValue、Formula、Textなどで
>条件分岐してはいかがでしょう?
すみません。。。。
おっしゃる意味が丸でわかりません。。。。

>どんな記述の仕方をしてるのかコードの提示がないので
これにつきましては「何が書いてあるか理解してない」ので、どこから
どこまでを ここに貼ればいいのか分からないので。。

お礼日時:2008/10/17 20:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています