マクロの勉強をしているのですが、練習で郵便番号検索ツールを作成したいと思っています。
概要
まず、郵便番号7桁を入力する。変換ボタンを押すと、住所を検索し、漢字で住所を表示し、読み仮名をひらがなで表示する。
とまぁ、こんな感じのものを作りたいと考えています。
で、取りあえず郵便番号と住所(読み仮名つき)一覧表を作りました。
一覧表は・・
A1には郵便番号、A2には都道府県名、A3には市区町村名、A4には町名、A5には市区町村名(ふりがな)、A6には町名(ふりがな)
となっています。
さて、ここからが問題なのですが・・・
ユーザーフォームを使ってこれを使えるようにしたいのですが、検索方法がわかりません。
イメージとして、テキストボックスに入力してもらい、変換ボタンを押すと、エクセルシートの中から該当する郵便番号を検索し、その隣にある内容を変数に代入し、持ってこようと思っていました。
でも、ここで問題が・・・
検索してるところが見えるとかっこ悪い 笑
というわけで・・もうちょっと何とかしたいんですけど、シートを非表示にしちゃうと、マクロの記憶で得た検索方法はエラーになっちゃうんですよね。。
そんなわけで、これをどうにかできないか考えています。非表示シートの検索方法があれば一番いいのですが、もしない場合は代替案を教えていただけるとありがたいです。
よろしくお願い致しますm(_ _)m
No.3ベストアンサー
- 回答日時:
こんにちは。
検索の前に一覧表の作り方ですが、行と列を逆にした方がいいです。
データ数がどのくらいか分かりませんが、項目が行方向ということはデータは列方向と言うことですよね?列は256しかないのですぐ足りなくなるのでは?と思います。
検索方法ですが、一般機能で言うと 編集→検索 をマクロで行っているのでしょうか?
だとすれば見つけたセルがアクティブになるので「マクロの記録」で得たコードでは検索部分のコードの最後にActivateと付いていると思います。
Activeにするのではなくて、Range型のオブジェクト変数に検索結果のセルを入れてっこの変に対して処理をするようにすればいいと思います。
こんな感じです。例えばSheet1でcを検索しその右隣の値を表示します。
Dim myrng As Range
Set myrng = Worksheets("Sheet1").Cells.Find(What:="c", _
After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext,MatchCase:=False, _
MatchByte:=False, SearchFormat:=False)
MsgBox myrng.Offset(0, 1).Value
どうでしょうか?
この回答への補足
書き方間違いました^^;
A1、B1、C1と列方向ですね。。
データ件数が12万件くらいなので行方向に項目を
割り振ったらシートがいくつあっても足りません 笑
ご指摘ありがとうございます&失礼しました。
あ、ズバリでした。すごい。。
ありがとうございます。
今回はこの方法で行きたいと思います。
ご解答いただいた皆様
ありがとうございました。
No.2
- 回答日時:
>シートを非表示にしちゃうと、マクロの記憶で得た検索方法はエラーになっちゃうんですよね
今日朝に回答した、別質問の回答を少しいじくって、
Sub test01()
Worksheets("Sheet1").Visible = xlVeryHidden
' Worksheets("Sheet1").Visible = True
Worksheets("Sheet1").Activate
On Error GoTo err
cd = InputBox("コード")
dt = CDate(InputBox("日付"))
d = Worksheets("Sheet1").Range("A65536").End(xlUp).Row
i = Worksheets("Sheet1").Range(Cells(2, "A"), Cells(d, "A")).Find(cd).Row
j = Worksheets("Sheet1").Range("B1:AJ1").Find(dt).Column
MsgBox Worksheets("Sheet1").Cells(i, j)
Exit Sub
err:
MsgBox "見つかりません"
End Sub
を実行すると、うまく検索しましたが。
私の思い違いがあるかも知れませんので、質問者の自己テストや後続の回答によってチェックしてみてください。
もしOKなら、Findメソッド、Offset、シートへ実行用コマンドボタン貼り付けで(フォームを使わなくても)できると思います。
今回はアクティブにしないことによってエラーが無事解消できました。
教えて頂いた書き方も試してみようと思います。
ありがとうございました
No.1
- 回答日時:
こんにちは。
現在どのようにして、検索しているのか判りませんが、
非表示のシートをアクティブにしようとしていませんか?
例えば、Sheet1が非表示だとして
Sheets("Sheet1").Select
や
Sheets("Sheet1").Activate
などとしていませんでしょうか?
Find メソッドはシートをアクティブにしなくても
Set r = Sheets("Sheet1").Cells.Find(What:=検索値)
のようにして検索値の有るセルを取得できますよ
。
ありがとうございます。マクロの記憶を利用していたので、ズバリアクティブにするにしていました 汗
これで無事に検索できるようになると思います。
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Google Maps 郵便番号を Google マップで調べる方法を教えてください 環境としては 日本に滞在して間もない 3 2022/03/23 12:25
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Excel(エクセル) VBA マクロ名のパスをとるには 2 2022/06/07 12:58
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- 格安スマホ・SIMフリースマホ GooglePixelで端末内のアプリを検索する方法を教えてください。 アプリ一覧に表示される検索ボ 2 2023/05/15 00:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル連番自動印刷について
-
エクセル マクロ写真帳に一括で...
-
Excelでマクロ実行中に画面を固...
-
VBA Shapes コピーと名前
-
【Excel】マクロでページを追加...
-
EXCEL 行番号や列番号が選択で...
-
エクセルファイルを値でのみし...
-
エクセルのマクロについて教え...
-
エクセルVBA MSGBOXを30秒間出...
-
VBAで行コピーして挿入
-
エクセルVBAで納期管理システム...
-
マクロで非表示シート内にある...
-
セルに入力するたびにマクロを...
-
【ExcelVBA】マクロブックを通...
-
シート名を記入する
-
エクセルに写真を挿入するマ...
-
EXCEL VBA 他のアプリケーショ...
-
エクセルでマクロ登録の不具合解消
-
VBAで保存しないで閉じると空の...
-
Excel マクロの編集がグレーに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルを値でのみし...
-
エクセルのマクロについて教え...
-
Excelでマクロ実行中に画面を固...
-
VBA Shapes コピーと名前
-
エクセル マクロ写真帳に一括で...
-
エクセル連番自動印刷について
-
エクセル 図形の寸法を取得したい
-
【Excel】マクロでページを追加...
-
セルに入力するたびにマクロを...
-
エクセルVBAで納期管理システム...
-
EXCEL VBA 他のアプリケーショ...
-
ブックの共有でVBAエラー
-
VBAで行コピーして挿入
-
EXCEL 行番号や列番号が選択で...
-
【ExcelVBA】マクロブックを通...
-
ExcelのVBAで自動採番したい...
-
シート名を記入する
-
エクセルファイルの回数期限の...
-
VB.NETによるEXCELの行挿入
-
再度,ExcelVBA,public変数が消える
おすすめ情報