![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
A列に郵便番号を入れると、(例:123-4567)B列に住所が出るマクロを組みたいのですが
なかなかできません。例えばA1セルに入力するとB1セルに。A4セルに入力するとB4セルに
出るといった感じです。インターネットで調べながら、
Option Explicit
' ワークシートのChangeイベント記述
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xlAPP As Application
' 郵便番号セル以外では動作させない
If Target.Address <> "$A$1" Then Exit Sub ' (1)
' 3桁以上の郵便番号があり、住所がブランクの場合のみ住所を変換させる
If ((Len(Cells(1, 1).Value) >= 3) And (Cells(1, 2).Value = "")) Then ' (2)
Set xlAPP = Application
xlAPP.EnableEvents = False ' (3)
' 郵便番号を全角変換し住所に転記
Cells(1, 2).Value = StrConv(Target.Value, vbWide) ' (4)
' 住所のセルを選択
Cells(1, 2).Select ' (5)
' F2 → Shift+Home → F13 を擬装入力する
SendKeys "{F2}", True ' 編集モード ' (6)
SendKeys "+{HOME}", True ' 文字列全体を選択 ' (7)
SendKeys "{F13}", True ' 再変換(MS-IME) ' (8)
xlAPP.EnableEvents = True
End If
End Sub
というコードを作ったのですが、これはA1セルしか対応しておらず、A列全体で対応できません。
何か方法があればご教授いただけたら幸いです。
No.1ベストアンサー
- 回答日時:
「A1セル」あるいは「1行目」を指定している箇所を漏れなく修正します。
変更例:今のマクロを全て消して下記に差し替える
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xlAPP As Application
' 郵便番号セル以外では動作させない
If Target.column <> 1 Then Exit Sub ' (1)
if target.count > 1 then exit sub
' 3桁以上の郵便番号があり、住所がブランクの場合のみ住所を変換させる
If ((Len(Cells(target.row, 1).Value) >= 3) And (Cells(target.row, 2).Value = "")) Then ' (2)
Set xlAPP = Application
xlAPP.EnableEvents = False ' (3)
' 郵便番号を全角変換し住所に転記
Cells(target.row, 2).Value = StrConv(Target.Value, vbWide) ' (4)
' 住所のセルを選択
Cells(target.row, 2).Select ' (5)
' F2 → Shift+Home → F13 を擬装入力する
SendKeys "{F2}", True ' 編集モード ' (6)
SendKeys "+{HOME}", True ' 文字列全体を選択 ' (7)
SendKeys "{F13}", True ' 再変換(MS-IME) ' (8)
xlAPP.EnableEvents = True
End If
End Sub
No.2
- 回答日時:
横からすみません。
郵便番号ウィザードでは・・・
2007-2010
http://office.microsoft.com/ja-jp/excel-help/HP0 …
2000-2007
http://www.microsoft.com/downloads/ja-jp/details …
人は易きに流れ。。。
ご回答ありがとうございます。郵便番号変換ウィザードでは一気に変換するしか方法がなく、
途中のセルを修正したいときにすぐに確かめることができず使い勝手が悪いため使用していません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) VBAで重複した値のセルに色付けをしたい 1 2022/11/02 16:12
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで 自動的に◯や数字を...
-
エクセルでファイルの最終更新...
-
シフト表をエクセルで作るとき...
-
Excel 2019 [オプション]の[リボンのユ...
-
Excelに詳しい方! B列が「日...
-
Excelファイルが開けません
-
excel2013 MonthDays 関数が使...
-
スプレッドシートの関数につい...
-
【マクロ】2回実行したら、エ...
-
特定の文字列を含む、住所を抽...
-
EXCELの散布図で日付が1900年に...
-
エクセルのツールバーから数値...
-
Excelで表を作ったところに文字...
-
祝日と土曜、日曜の合計をカウ...
-
Excelについて
-
【マクロ】名前を保存する際に...
-
Excel分数の表示について
-
エクセルでCtrl+Tでテーブルの...
-
マイクロソフトのPADを使ってい...
-
【EXCEL】画像の黄色部分の抽出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報