• 締切済み

エクセルのマクロで悩んでます

はじめて投稿いたします。 現在、エクセル2000でマクロを組んでいるのですが、何日も悩んでそこから動けないので質問させていただきます。 やりたいことは、 (1)検索フォームの入力テキストに記載した数値を読んで検索ボタンを押すと、 (2)データブック.xls内の完全に一致した数値のセルの行をアクティブにして (3)その行のA列からO列の値をコピーして (4)入力ブック.xlsの入力シートのB4:B18に数値だけ貼り付け したいと考えています。 検索フォームは入力ブック.xls内で作成しています。 今のところ、(3)でA列の値を読んで、(4)でB4セルに貼りつけということはできているのですが、複数になるとできていません。 根気よく、同じプログラムを書くのが良いのでしょうか? かなり面倒なので、もっと簡単にかける方法があれば教えてください。

みんなの回答

  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.3

>個人的に最も引っかかっているのが、別ブックで処理を繰り返さなければならないところなんですが・・・。 一個ずつができているのであれば、RangeかCellsの指定先を変数に変えてやって、For文の回すのでいいのでは? 変数は使いまわし・上書きができるのですから、値を保持しておかないといけない理由がない限りはFor文を書いてやる以外に差はないと思いますが・・・ それと、いちいちアクティブセルを指定してやる必要はないです。 アクティブセルが指定されなくても値は指定したセルに代入されます。 それともブックやシートの指定方法がわからないということでしょうか?

juventos09
質問者

お礼

sykt1217さん、回答ありがとうございます。 このサイトの使い方をイマイチ理解していなかったもので、返信が遅くなってしまい、申し訳ありません。 ご回答をいただいてから四苦八苦しておりましたが、先ほどようやくできました!! 考え方をご教授いただきましてありがとうございました。

  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.2

>複数になるとできていません。 ここがちょっとわかりませんが、「二つ以上のセル」ということでしょうか。 それであればFor文を使ってやればいいかなっと思いますが・・。(論点がズレていたらすみません。) 例: Dim i As Integer With Worksheets(ActiveSheet.Name)  For i = 2 To 32   .Cells(7, 33) = .Cells(7, 33) + .Cells(7, i) Next End With 上はAG7にB7~AF7の値を足して行く簡単な処理です。 これをベースに考えれば、恐らく実現できると思います。(本当に論点ズレていたらすみません^^;

juventos09
質問者

お礼

sykt1217さん、回答ありがとうございます。 個人的に最も引っかかっているのが、別ブックで処理を繰り返さなければならないところなんですが・・・。 For文を使って、考えて見たいと思います。

  • denbee
  • ベストアンサー率28% (192/671)
回答No.1

そのような場合はforループやwhileループによる繰り返し制御を行えばよろしいかと思います。 繰り返し制御とは、一定条件を満たすまで同じ処理を繰り返すことを言います。 例えば、  while(アクティブなセルが空白でない)   (3)、(4)の処理   次のセルをアクティブにする  wend とすると、アクティブなセルが空白になるまで、(3)、(4)の 処理を繰り返します。 上記はおおざっぱに書いているだけですので、詳細は「whileループ」や「forループ」 などの単語で検索して調べてみてください。

juventos09
質問者

お礼

denbeeさん、回答ありがとうございます。 別ブックでそれぞれアクティブセルを移動させるのはどうしたらよいかわかりますか?? 初心者なので、変数が2つ以上あるとイマイチ分からないのですが・・・

関連するQ&A