こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excelでキーワード検索後にその同行別列に移動するマクロ(VBA)

エクセル(Excel2002)のシート内に商品コード、商品名、製造年月日、・・・出荷日と並んだレコードが2千件程あるデータベースがあるとします。

そのデータベース内のA列の「商品コード」を検索して、該当データのX列の「出荷日」にデータを入力するという作業を、
Ctrl+Fの検索ダイアログで該当商品コードを入力しEnter→該当するA列の商品コードにヒットする→Escキーでダイアログを消す→マウスで同行の「出荷日」X列をクリック→出荷日を入力

という行程で作業しています。
それを、マクロを実行すると検索ダイアログBOXが表示され→検索値(商品コード)を入力してEnter→該当データがある場合は、検索ダイアログBOXが自動的に消え、そのレコードのX列(出荷日)がアクティブになり出荷日が入力できる状態になる。
該当商品コードがない場合は”ありません”というメッセージを出す。
としたいと思っております。

検索&入力しなくてはいけないデータは数百件あり、少しでも効率よく作業できないかと悩んでおります。
VBAはまだまだ勉強中で、こちらのサイトでみなさんが解答されているものを引用する程度しか出来ない初心者ですが、宜しければ具体的な構文を教えて下さい。
宜しくお願いします。

投稿日時 - 2007-03-14 17:43:32

QNo.2832817

困ってます

質問者が選んだベストアンサー

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

投稿日時 - 2007-03-14 20:03:58

補足

又々的確なマクロを教えて頂きありがとうございます!
テスト環境で試して見た所、ばっちり出来ました♪
明日職場で実行するのが楽しみです。
o(^-^)o
先に解答頂いたマクロと比較して、「へぇ~こうなるのか・・・」と大変勉強になりました。
昨日からVBAの入門書を読みふけり、ほんの少しだけわかるようになったものの(かなり低いレベルでですが)、直ぐにはやりたい事を記述できる訳もなく、明日は地道にやるしかないかぁ・・・と諦めていた所なので、教えていただいて本当に嬉しいです。
これに味をしめてまた質問しちゃうかもしれませんが、ご縁がありました際は宜しくお願いします。
本当にありがとうございました。
m(__)m
P.S Alt+F11 活用させてもらってます。便利ですね♪

投稿日時 - 2007-03-14 21:12:00

お礼

すみません、「お礼」を記すつもりが「補足」に記してしまいました。
内容はお礼です。

投稿日時 - 2007-03-14 22:44:54

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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で出てくるマクロの画面から「オプション」でショートカットキーを設定するか、画面にボタンを配置してマクロを割り当てたら便利かと思います。

投稿日時 - 2007-03-14 18:35:19

補足

早速教えて頂き、真にありがとうございます!
まさにやりたい事を完璧に出来るマクロを教えて頂き、嬉しくてたまりません!
ヾ(〃^∇^)ノ♪
本当にありがとうございました。

これで作業は格段に早くこなせるので十分なのですが、欲を出してもう少しだけ質問させて頂くと、実際検索するシートは3シートあり、最終的に入力したい「出荷日」は、最初のシートではX列にあっても、2つ目のシートのシートではY列にあります。
 Cells(R.Row, "X").Selectを、X列を指定するのではなく、”出荷日”が入力されている列という構文にする事も出来るでしょうか?
宜しくお願いします。

投稿日時 - 2007-03-14 19:34:26

あなたにオススメの質問