• ベストアンサー

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/17068)
回答No.1

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

K22321
質問者

お礼

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

関連するQ&A

  • VBAでセルの色を変更するには

    ある範囲のあるセルの色のみ一気に変更したいのですが、自力で調べた結果はセルに色を付ける以下の記述までしか分かりませんでした。 例えば、現在のベージュ(40)を赤(3)に変更するにはどう記述すればよいのでしょうか? 宜しくお願いします。 Sub Macro1() Range("A1:N180").Select With Selection.Interior .ColorIndex = 40 .PatternColorIndex = xlAutomatic End With End Sub

  • Excel VBA で 一括書式設定(選択セルのみ)

    おはようございます。教えてください。 結合されたセル内に、 あいうえお1か き?! くけこ2 さしすせそ3たち。 つてとな45.67 というように、いくつかのセル内改行を含み、文字数がばらばらのデータが入っています。 それらの1行目(上記の例で言うと、「あいうえお1か」)のみフォント緑色、2行目はフォント青色、3行目以降はフォント黒色の書式設定を、選択セルすべてに対し、マクロで行いたいのです。 1行目だけなら以下のマクロでできたのですが、2行目以降の参照の仕方がわかりません。 Sub 一行目緑() For Each c In Selection With c.Characters(Start:=1, Length:=InStr(c.Value, Chr(10)) - 1).Font .ColorIndex = 10 End With Next End Sub ご回答よろしくお願いいたします。

  • エクセルのマクロで範囲指定をセルに番号を入れて、範囲指定したセルの字の

    エクセルのマクロで範囲指定をセルに番号を入れて、範囲指定したセルの字の色を白にして消したいのですが、番号を入れるマクロがわかりません。マクロに記録でA2からB12までのセル内の字の色を白 にする方法は Sub 字を消す() ' ' 字を消す Macro ' ' Range("A2:B11").Select With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With End SubでできるのですがD3に開始番号、E3に終了番号を指定する方法がわかりません。ご教授お願いします

  • エクセル VBAが作動しない

    セルの色を変換するVBAとして、標準モジュールに以下のマクロを書き込んでいます。 Sub グレイに() Dim c As Range For Each c In Selection With c.Interior If .Color = RGB(162, 187, 220) Then .Color = RGB(190, 190, 190) End With Next End Sub エクセルに戻って、ctrl+F8で、マクロ名を選んで、実行すれば、実行されるはずなのですが、なぜかきちんと変換されません。 詳しく書くと、何度も何度も「実行」ボタンを押していると、セルの色が指定どおりグレイになるときもあるのですが、特に作動するときと作動しないときに操作の差はありません。 当然ですが、「必ず」実行して欲しいのですが、どこに問題があるのでしょうか? 教えてください。

  • エクセルのマクロ、VBAに関する質問

    エクセルのマクロ、VBAに関する質問です。 下記コード3行目の"ここヘルプ!"のところを ”「選択範囲左上のセル Selection(1)」を「A1形式」で「行だけ絶対参照 xlAbsRowRelColumn」したものに10足した値” にしたいです。 例:選択範囲がA1:D5なら”A$1+10”   選択範囲がB4:H78なら”B$4+10” もうちょっとで出来る気がするので教えて下さい。 Sub 基準値+1o以上をハッチング() Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _ Formula1:="ここヘルプ!" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 52479 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False End Sub

  • VBA セルの色を変更する

    VBA(エクセル2007使用)で、セルの背景色を変更する場合についての質問です。 マクロを実行する度に、セルの背景色を変更するマクロを作成しました。 オレンジ→水色→緑→灰色→無色  という風に変わっていくところまでは できたのですが、これだとマクロを実行するのにセルの状態が無色か、指定した カラーコードで塗りつぶされていないと実行できません。 下記、コードの一番最初の Case で ”背景色がどんな色の場合でも”という条件に したいのですが、どのように記載したらわからずにいます。。。 ---------------------------- Sub 色チェンジ() n0 = ActiveCell.Interior.ColorIndex Select Case n0 Case xlNone   ’ここを”どんな色の場合でも、、、という条件にしたいです。。” Selection.Interior.ColorIndex = 40 Case 40 Selection.Interior.ColorIndex = 34 Case 34 Selection.Interior.ColorIndex = 35 Case 35 Selection.Interior.ColorIndex = 15 Case 15 Selection.Interior.ColorIndex = xlNone End Select End Sub -----------------------------------

  • Excelのマクロ(VBA)について教えてください。

    このようなマクロをつくりたいのですがうまく作れません。 セルをコピーした後、貼り付け先のセルを選択して、 <ここからがマクロ> 形式を選択して貼り付け→罫線を除くすべて <マクロ終了> 他の貼り付け方法はうまくできるのですが、「罫線を除くすべて」だけができません。 参考までにこれが作られたVBAです。 Sub Macro1() Selection.PasteSpecial Paste:=xlAllExceptBorders, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub 以上です。 どなたかアドバイスよろしくお願いします。

  • EXCELでマクロの記録を繰り返して

    EXCELでマクロの記録を繰り返して重複した行は分かる範囲でまとめたのですが、もう少しまとめられないかと思っています。 withで、まとめられなくても、順番を入れ替えたらまとまるものとか、逆にまとめようが無いものとか教えて頂けたらと思います。 よろしくお願いします。 With Selection .Phonetics.Visible = False 'フリガナ表示をオフに .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection .FormatConditions.Add Type:=xlExpression, Formula1:="=AND(NOT(ISBLANK($A3)),ISBLANK($L3))" .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority End With With Selection.FormatConditions(1).Interior .Pattern = xlSolid .PatternColorIndex = 0 .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Selection .FormatConditions.Add Type:=xlExpression, Formula1:="=AND(NOT(ISBLANK($A3)),NOT(ISBLANK($D3)))" .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .TintAndShade = 0 .PatternTintAndShade = 0 .Color = 5296274 End With With Selection .FormatConditions.Add Type:=xlExpression, Formula1:="=AND(NOT(ISBLANK($A3)),ISBLANK($R3))" .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent5 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False

  • VBAで連続して二つのセルの内容をを一つのセルにコピー

    初めまして、よろしくお願いします。 VBAで連続して二つのセルの内容をを一つのセルにコピーしたいと考えています。 Sub Test1() Sheet1.Range("A1") = Sheet2.Range("A1") & Sheet2.Range("C1") End Sub というのは解りますが、A1からA100までの連続で、その間空白がある場合のVBAを教えて頂きたく、よろしくお願いします。

  • エクセル2003 VBAなのですが

    エクセル2003 VBAなのですが   A   B    C    D    E    F 1 あ   い   う   お   う   123 2 お   さ   え   あ   お   お 3 あ   い   え   お   え   888 上記のような表があるときに 3個以上同じ文字がある場合にセルに色をつけていきたい状況です 上記表でいうと『あ』と『え』と『お』のセルに色をつけたいのです セルには文字列のほかに数字も入っている状況です 単純にCtrl+Fで検索をして『すべて検索』で 出てきたセル全部に色をつける。 それをA1から文字があるところ全部やる と言った事をマクロでやりたいと思っております。 皆様よろしくお願いいたします。

専門家に質問してみよう