• ベストアンサー

excel色のついているセルだけをコピーするマクロ

お世話になります。エクセル2013です。 Y列にある色のついているセルだけをコピーするマクロを作成したいのですが、ネット上によく似たモノ?もあるのですが×です。私にはできずギブアップしています。 ※コピーしたあとは別のソフトで利用します。 どのようなVBAになるのかご教授いただければ幸いです。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.4

黄色ということですので ご要望の通りコピーだけです。 Sub Test() Range("Y2").Value = "Test" Range("Y2").AutoFilter 1, RGB(255, 255, 0), xlFilterCellColor Range(Range("Y3"), Cells(Rows.Count, "Y").End(xlUp)).Copy End Sub

raminosuke
質問者

お礼

皆様ありがとうございました。いろいろと勉強になりました。

その他の回答 (5)

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

VBAには(本件はエクセルです)Findというセル(範囲)を対象とするメソッドがあり、 相当前のバージョンから、書式(Format)を指定して、該当を探せます。 参考までに、それでやってみると下記。 下記は、データがA列にあり、定数 vbYellowでヒットする形の書式設定がしてあるとした場合です。 WEBのMougeの記事を修正したものです。 結果はK列にセットします。 ーー 標準モジュールに Sub Sample() Dim c As Range Dim Rng As Range Dim 実験結果 As Range Dim firstAddress As String Set 実験結果 = Range("A1:A1000") Application.FindFormat.Clear Application.FindFormat.Interior.Color = vbYellow Set c = 実験結果.Find(What:="*", SearchFormat:=True) 'range()は不要。セルの不問が * です。 If c Is Nothing Then MsgBox "該当データはありません" Exit Sub Else firstAddress = c.Address Set Rng = c '------該当データをK列への書き出し r = Range("K1000").End(xlUp).Row Cells(r + 1, "K") = c.Value '----- Do Set c = 実験結果.Find(What:="*", _ After:=c, _ SearchFormat:=True) If c Is Nothing Then Exit Do If c.Address = firstAddress Then Exit Do '------該当データをK列への書き出し r = Range("K1000").End(xlUp).Row Cells(r + 1, "K") = c.Value '----- Set Rng = Union(Rng, c) Loop End If End Sub コピー貼り付けをするには、K列データをコピーするVBAを加え、実行し、ただちに(このコピーモードが有効なうちに)目的のものに手動(質問者の希望)貼り付けする。

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

コピー先には、手操作で貼り付ける、としても、難しい問題があるようだが。 A列にデータがあり、セルの塗りつぶしのセルが所どころあるとして、(色はColorIndexで設定方式として)、初歩的なやり方ですが、 標準モジュールに Sub test04() Range("A2:A1000").Select '<ーーY列に修正のこと i = 1 For Each cl In Selection If cl.Interior.ColorIndex <> xlNone Then cl.Copy Cells(i, "K") ’<ーー好きな列に修正のこと i = i + 1 End If Next Range("K1").CurrentRegion.Copy End Sub メモ帳に貼り付けは、(文字数字記号などのみで)うまく行くようだが、ワードに貼り付けは罫線まで張り付けてしまう。 データ値は1列に上から下の形だが、それでよいのか?(それを整えるのに、手操作の時間がかかるだろう)。 貼り付け先のソフトが違うと(エクセル以外だと)、プログラムででこれらの操作を完遂するのは難しいと思う。 APIなどを使う必要があるかも。オブジェクトのコピー方式では、ソフトによって オブジェクトの決め方、場所の捉え方が違うので、素人(小生)には難しい。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

あと ネット上によく似たモノ とはどこなのかも記載したほうが、どれくらいのものでギブアップしてるのかわかります。同じようなコードの回答がついてもしかたがないですよね。 それから2013なら色フィルターが使えますからそれを利用したらVBA使わなくても手動でコピペできますよ。

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

質問が不完全。 コピーした後、どのセルに張り付けるのかを書かないと、回答例が作れない。 こいう大雑把なっ思考や表現する人は、コンピューターには向かないおそれあり。 excelは現状バージョンでは関数で、セルに色が着いているセルを判別できない仕組み。 だからVBAを使うことになり。あまりそういうものを好きでなさそうだが、どうかな。 「入力規則」で色がついているなら、操作で、「セルの選択」の中に「データの入力規則」がある。 VBAでは、コード2、3行の見込み。

raminosuke
質問者

補足

大雑把な質問の仕方で申し訳ありません。 最終的にコピーした後は別のソフトに張り付けるので、VBAで色付きセルのコピーできればと考えています。 ちなみにこの色は手動でセルに色付け(黄色)したモノです。 Excelのバージョンは2013です。 よろしくお願いいたします。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

> よく似たモノ?もあるのですが×です。私にはできずギブアップしています。 回答されたVBAをご自身のケースに合わせられないのでしたら、具体的にどこからどこまでをどこにコピーするのか(Y列だけでは分からない)記載しないとお互い時間の無駄になります。

raminosuke
質問者

補足

貴重な時間を使って書き込みして頂きありがとうございます。 具体的にはY列の3行目から100行目くらいの範囲にある黄色のセルのみをコピーしたいです。 その後は別のソフトに張り付けるので必要ありません。