エクセル(Excel2002)のシート内に商品コード、商品名、製造年月日、・・・出荷日と並んだレコードが2千件程あるデータベースがあるとします。
そのデータベース内のA列の「商品コード」を検索して、該当データのX列の「出荷日」にデータを入力するという作業を、
Ctrl+Fの検索ダイアログで該当商品コードを入力しEnter→該当するA列の商品コードにヒットする→Escキーでダイアログを消す→マウスで同行の「出荷日」X列をクリック→出荷日を入力
という行程で作業しています。
それを、マクロを実行すると検索ダイアログBOXが表示され→検索値(商品コード)を入力してEnter→該当データがある場合は、検索ダイアログBOXが自動的に消え、そのレコードのX列(出荷日)がアクティブになり出荷日が入力できる状態になる。
該当商品コードがない場合は”ありません”というメッセージを出す。
としたいと思っております。
検索&入力しなくてはいけないデータは数百件あり、少しでも効率よく作業できないかと悩んでおります。
VBAはまだまだ勉強中で、こちらのサイトでみなさんが解答されているものを引用する程度しか出来ない初心者ですが、宜しければ具体的な構文を教えて下さい。
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
No.1です。
補足拝見しました。1行目に「出荷日」という文字列が入力されている列を探して、その列が選択するように修正してみました。一応「出荷日」という項目がない場合はエラーメッセージを出すようにしています。
Sub 出荷日入力()
Dim Code As String
Dim R As Range, S As Range
Set S = Rows(1).Find(What:="出荷日", LookAt:=xlWhole)
If S Is Nothing Then
MsgBox ("出荷日の列が見つかりません")
Exit Sub
End If
Code = InputBox("商品コードを入力してください")
Set R = Columns("A").Find(What:=Code, LookAt:=xlWhole)
If R Is Nothing Then
MsgBox (Code & "は登録されていません")
Exit Sub
End If
Cells(R.Row, S.Column).Select
End Sub
この回答への補足
又々的確なマクロを教えて頂きありがとうございます!
テスト環境で試して見た所、ばっちり出来ました♪
明日職場で実行するのが楽しみです。
o(^-^)o
先に解答頂いたマクロと比較して、「へぇ~こうなるのか・・・」と大変勉強になりました。
昨日からVBAの入門書を読みふけり、ほんの少しだけわかるようになったものの(かなり低いレベルでですが)、直ぐにはやりたい事を記述できる訳もなく、明日は地道にやるしかないかぁ・・・と諦めていた所なので、教えていただいて本当に嬉しいです。
これに味をしめてまた質問しちゃうかもしれませんが、ご縁がありました際は宜しくお願いします。
本当にありがとうございました。
m(__)m
P.S Alt+F11 活用させてもらってます。便利ですね♪
No.1
- 回答日時:
こんな感じでしょうか。
Alt+F11でVBAの画面を開き、左側のツリーからブック名を選択し、右クリックから「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。Sub 出荷日入力()
Dim Code As String
Dim R As Range
Code = InputBox("商品コードを入力してください")
Set R = Columns("A").Find(What:=Code, LookAt:=xlWhole)
If R Is Nothing Then
MsgBox (Code & "は登録されていません")
Exit Sub
End If
Cells(R.Row, "X").Select
End Sub
貼り付けたらVBAの画面は閉じ、Excelの画面からAlt+F8でマクロを実行してください。Alt+F8で出てくるマクロの画面から「オプション」でショートカットキーを設定するか、画面にボタンを配置してマクロを割り当てたら便利かと思います。
この回答への補足
早速教えて頂き、真にありがとうございます!
まさにやりたい事を完璧に出来るマクロを教えて頂き、嬉しくてたまりません!
ヾ(〃^∇^)ノ♪
本当にありがとうございました。
これで作業は格段に早くこなせるので十分なのですが、欲を出してもう少しだけ質問させて頂くと、実際検索するシートは3シートあり、最終的に入力したい「出荷日」は、最初のシートではX列にあっても、2つ目のシートのシートではY列にあります。
Cells(R.Row, "X").Selectを、X列を指定するのではなく、”出荷日”が入力されている列という構文にする事も出来るでしょうか?
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaマクロについて シート1のA列にある商品コードが シート2のB列にある商品コードに該当する場合 2 2023/05/17 13:41
- Excel(エクセル) マクロVBAのフォルダ階層別で検索の方法 4 2022/04/03 23:23
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
- その他(プログラミング・Web制作) パイソンでのプログラミングについて 3 2022/08/11 20:31
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
すべてのシートを選択してエク...
-
エクセルで時刻を自動入力する方法
-
エクセルで隣のセルと同じ数字...
-
A列を検索し一致した行を表示。...
-
Excelのデータが重いのはなぜで...
-
エクセルで30日以内に同内容の...
-
エクセルの入力 エンターキーで...
-
Excel VBA 答えが0になってし...
-
複数のスプレットシートで入力...
-
「未使用」と「不使用」ってど...
-
1点の辻の字に変換したいがエク...
-
Excelでエラー(#N/Aなど)値を...
-
ローマ字入力で「トゥ」を入力...
-
もしセルが"#N/A"なら~をする...
-
SUM関数の範囲に#N/Aが...
-
excelで小数点0を表示させる方法
-
自動改札のエラーって…
-
Word文書に、チェックマーク(...
-
エクセルで0.0と表示したい
-
他シートのある列を検索して一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
すべてのシートを選択してエク...
-
エクセルで時刻を自動入力する方法
-
Excelのデータが重いのはなぜで...
-
エクセル。ブック内検索で重複...
-
Excel VBA 答えが0になってし...
-
EXCEL VBA 区切り位置のプログ...
-
合計が0の行を削除
-
エクセルで、「袋詰め問題」を...
-
excelで下一桁を選択する方法
-
複数のスプレットシートで入力...
-
エクセルで30日以内に同内容の...
-
A列を検索し一致した行を表示。...
-
エクセルマクロについて データ...
-
スプレッドシートで、指定した...
-
エクセルの中の漢字を一度にカ...
-
Excelの関数についてしつもんで...
-
エクセルで隣のセルと同じ数字...
-
VBAに関する質問です。
-
エクセルの入力 エンターキーで...
-
エクセルで人名を50音順に表...
おすすめ情報