• ベストアンサー

excel VBA 緑色の付いたセルをすべてコピー

お世話になります。excel2007です。 緑色の付いたセルをすべてコピーするマクロを作成したいのですが・・・ マクロの記憶の実行 検索(ctrl + F) ⇒ オプションでセルを緑 ⇒ すべて検索 ⇒ 検索結果をすべて選択(ctrl + A) ⇒ 検索を閉じる ⇒ コピー(ctrl + C) マクロの記憶の終了 エクセル上ではしっかりコピーできています。 VBAは以下の通りでした Sub 緑色のセルをすべてコピー() ' 緑色のセルをすべてコピー Macro    With Application.FindFormat.Interior     .PatternColorIndex = xlAutomatic     .Color = 5287936     .TintAndShade = 0     .PatternTintAndShade = 0    End With    Selection.Copy End Sub このマクロを実行しても、現在選択されているセルを コピーしてしまいます(緑色を検索してくれないです)。 どのようにVBAを編集すればよろしいのでしょうか??

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

  • ベストアンサー
  • argument
  • ベストアンサー率63% (21/33)
回答No.3

こんにちわ K22321 さん おきたらこんな時間でした。久々の休日とはいいものです。 さておき、もう少し詳細に述べて欲しかったのですが・・まぁよいでしょう。全てがA列にデータが書き込まれてる意場合とします。 以下を回答として提示します。 Sub test() Sheets("まとめ").Select For i = 1 To Range("A65536").End(xlUp).Row If Range("A" & i).Interior.ColorIndex <> -4142 Then datas = datas & Range("A" & i).Value & vbTab Next datas = Split(Left(datas, Len(datas) - 1), vbTab) For i = 0 To UBound(datas) Sheets("重要").Range("A" & i + 1).Value = datas(i) Next End Sub さて実行してみましたか? "色のついているセル"のデータが「重要」シートにコピーされました。 ひとまずはこれで解決でしょう。 今回のあなたがもう少し頭を捻るべきは考える事より検索する事です。 あなたの言う緑というのはカラープロパティ上いくつなのでしょうか? 薄し緑やらライムやら濃い緑やら色々あります。そしてその言葉でも色指定は聞いててわかりづらい。なぜならRGB設定で色を作れるからです。まぁ構いません。なくても作業はできます。 そのため上記は緑のセルではなく色のあるセルです。 もし色がわかれば「<>」ではなく「=」で結べばより確実です。 さて処理を簡単に説明します。 A列じょうデフォルト背景色番号(-4142)と比較しそうでなければ(色がついていれば)そのデータを回収しA列最後まで それを配列化 今度は取得したデータを重要シートにデータのあるぶんだけ吐き出します。 処理違い・補足・追加処理等必要でしたらいってください。

K22321
質問者

お礼

argumentさん、休日にどうもありがとうございます。 これは試しましたがとてもすごいです! しっかりと空白のセルも取って来てくれるようにできているなんて。。。 こんなに短く書けるものとは考えておりませんでした。 色の付いたセルで検索する。。。 ニュアンスは理解できたと思います。 難しいですね。マクロの記録ではこれは出てきませんでした。 >処理違い・補足・追加処理等必要でしたらいってください。 処理はA列だけでなく色を指定した範囲ですが、 先ほどのVBAの範囲にB・C・D・・・・と加えればできました。 ありがとうございます。

その他の回答 (2)

  • argument
  • ベストアンサー率63% (21/33)
回答No.2

こんばんわ K22321 さん どのようにデータを纏めたいのでしょうか? 大体の範囲等ががあればカラープロパティからセルを判定して 配列に格納して吐き出す方法ならできるかと思いますが・・・。

K22321
質問者

補足

argumentさん、ありがとうございます。 >どのようにデータを纏めたいのでしょうか? イメージは以下のような感じです。 --------シート”まとめ”--------------------- 1.予定表 ##########################################   今日の予定                     緑       ・やらなければならないこと       緑 ##########################################   明日の予定       ・特になし ##########################################   明後日の予定                   緑       ・やらなければならないこと       緑 ########################################## --------シート”重要”--------------------- ##########################################   今日の予定                     緑       ・やらなければならないこと       緑 ########################################## ##########################################   明後日の予定                   緑       ・やらなければならないこと       緑 ########################################## ------------------------------------------- のように重要度などを纏めておきたいと考えておりました。 シートは分けるかそのページに貼り付けるか決めておりませんが、 色を判別して分ける仕様を思い描いています。

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

>エクセル上ではしっかりコピーできています 本当ですか。閉じてコピー先を選択するとき、うまく行かない。 もともと普通の場合で、飛び飛びの複数セルをCTRLを押して選択して、コピーできない。 そういうことはありませんか。 マクロのコードにもPasteに当たるものがはいっていませんね。 他のVBAでやらないとならないかも知れません。 ーーー 別の方法(FindメソッドとCopy・Paste)でやることを考えやってみましたが、 コピー元に数式が入っている場合、貼り付け先のセルによって、式によって、変化が起こり、難しい点があると言うことが、テストでわかりました。 また http://support.microsoft.com/kb/282151/ja のような情報もあります。 相当難しいです。コピーAND貼り付けでなく、セルの値と書式に限れば、少し易しくなります。 === 前半は、やや不安アリ、私の勘違いであれば、お詫びします。

K22321
質問者

お礼

imogasiさん、色々考慮頂きありがとうございます。 >もともと普通の場合で、飛び飛びの複数セルをCTRLを押して選択して、コピーできない。 説明不足でした。誤った表記申し訳ありません。 私が行ったのは緑色のセルがたまたま四角の(飛び飛びではない)範囲 でコピーを行う事ができたようです。 色の付いたセルで重要度などを分けて整理できたらなと思ったのですが、 まさかこんなに難しいものとは思いませんでした。

関連するQ&A