• ベストアンサー

背景色付きセルを他のシートに抽出したい。

VBAは初心者です。環境はWINDOWS-XP、エクセル2003です。 よろしくお願い致します。 まず、背景ですが、営業週報をエクセルで管理しています。 シート1、シート2、シート3がそれぞれ客先にあたります。 (客先はもっと沢山ありますが、ここでは仮にシート3まで) 毎週各シートから更新部分をコピペするのが面倒なので、 シート4にそれぞれの客先の更新された部分のみ抽出する ボタンを作成して、マクロを登録しようと考えています。 更新した部分は背景色をつけるので、その背景色を条件として 判断し、抽出させるのが良いかと考えています。 エクセルの画面は下記のような感じです。 【シート1~3】   A       B     1  案件名   ほにゃららAAA 2 10月1日  商談内容1 3 10月11日 商談内容2 4 10月20日 商談内容3(背景色:黄色) 5 6  案件名   ほにゃららBBB 7 10月2日  商談内容1 8 10月12日 商談内容2 9 10  案件名   ほにゃららCCC 11 10月2日  商談内容1 12 10月20日 商談内容2(背景色:黄色) 各シートを読み込んで、背景色が黄色になっているセルをコピーし、 シート4にそのセル内の文字を吐き出すにはどのようにプログラム すれば良いでしょうか。 また、更新されている案件名(上記例、ほにゃららAAA、ほにゃららCCC )も、 同じように抽出するにはどのようにすれば宜しいでしょうか。 お知恵をお借りしたく、よろしくお願い申し上げます。

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

  • ベストアンサー
  • nekoron07
  • ベストアンサー率37% (69/184)
回答No.4

No.1です。 マクロのどの位置(何行目)でエラーが出ているかわかりますか? (エラーメッセージのあとで「デバッグ」のボタンを押すと、VBエディタが開き、問題となっている行が黄色で示されます。) それと、ここから先は想像ですが。 シート名はもとの「sheet1」~「sheet4」のままですか? それとも名前を変えておられますか? もしシートの名前を変えておられるのでしたら、マクロ記述の3行目の   sheets("sheet1").select の「sheet1」の部分をその名前に、また14行目の   Sheets("Sheet4").Select の「sheet4」の部分をデータの書き出しを行うシートの名前に変えてみてください。

a_student
質問者

お礼

できました!!! ヽ(´∀`*)ノワーィヽ(*´∀`)ノワーィ ありがとうございました。 非常に助かりました!

その他の回答 (3)

  • nekoron07
  • ベストアンサー率37% (69/184)
回答No.3

No.1です。 すみません、ボタンはシート1に作られると想定して作りました。 シート4に作られたのでしたら、下記のようにマクロの3行目に1文を加えてください。 ※マクロの中にA(案件名を保存する)とS(内容を保存する)という変数を作って、その中にデータをコピーして貼り付けしていますので、「Copy」や「Paste」は必要ないのです。この方が処理が早いのでこのようにしています。 Sub Macro1() Dim A, S   sheets("sheet1").select   Range("A1").Select   …以下は先ほどのとおり。

a_student
質問者

補足

ありがとうございます。 3行目に sheets("sheet1").select を追加して実行致しました。 今度は 「インデックスが有効な範囲にありません」 というエラーメッセージが表示され上手くいきません(TT)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>更新した部分は背景色をつけるので、その背景色を条件として 判断し その通りコードを組めばよいと思いますよ。この点だけには難しいことはない。 Range(セル)のInterior.ColorIndex が決まったコードかどうか 聞いてTRUEなら そのセルの値(多分商談内容)と、関連して書き出さなければならない、案件名、日付などを書き出す(x)。 上記の(x)の部分のコードはシコシコと書いてゆく世界で、アイデアも何もない。 またこの質問にも書いてないし、質問者が一番良くわかっている内容でしょう。 ーー エクセルでということで、仕方がないのでしょうが、私の経験した 面談システムは、質問とは逆に、本件質問で抽出結果のような内容を入力し、データベースにためて、過去の情報や付帯情報などと組み合わせて、レポートを作成というものでした。 >更新した部分は背景色をつけるので これは各担当者などに十分守られるのでしょうかね。 入力シートがどんなものかわからないのですが。 こういう業務はエクセルでは処理しづらいのでは。

  • nekoron07
  • ベストアンサー率37% (69/184)
回答No.1

細かい設定がわかりませんが、とりあえずシート1の黄色(色コード6)のセルをシート4にコピーするマクロです。 シート2、シート3についてはできれば質問者様で改造して作ってみてください。 シート4のどの位置に出力したいとか、ここはこうしたい、とかがあればまたどうぞ。 Sub Macro1() Dim A, S   Range("A1").Select   Do While ActiveCell <> "" Or ActiveCell.Offset(1, 0) <> ""     If ActiveCell = "案件名" Then       ActiveCell.Offset(0, 1).Range("A1").Select       A = ActiveCell       ActiveCell.Offset(1, -1).Range("A1").Select     Else       ActiveCell.Offset(0, 1).Range("A1").Select       If ActiveCell.Interior.ColorIndex = 6 Then       S = ActiveCell       Sheets("Sheet4").Select       Range("A1").Select       Do While ActiveCell <> ""         ActiveCell.Offset(1, 0).Range("A1").Select       Loop       ActiveCell = A       ActiveCell.Offset(0, 1).Range("A1").Select       ActiveCell = S       Sheets("Sheet1").Select       ActiveCell.Offset(1, -1).Range("A1").Select     Else       ActiveCell.Offset(1, -1).Range("A1").Select     End If   End If   Loop End Sub

a_student
質問者

補足

ありがとうございます。 早速シート4にボタンを作成し、 上記マクロを登録して、ボタンを押して実行致しましたが、 何も起こりません。。。 黄色のカラーインデックスを27に変えて試しましたが、 やはり何も起こりません。。。 ところで上記プログラムを読むと、 「Copy」と「Paste」とも入っておりませんけれど、 そこが問題でしょうか。

関連するQ&A