• 締切済み

VBマクロ 色の付いたセルを含む行をコピーしたい。

VB初心者です。 こちらでご指導頂きながら勉強しております。 今回もどなたかご教授お願い致します。 G列~R列内の色の付いたセルを含む行を 次のシートにコピーしたいのですが… マクロを組んで実行したいと思っております。 どなたかアドバイス宜しくお願い致します。

みんなの回答

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

Sub test01() For Each cl In Range("g:I") MsgBox cl.Address Next End Sub 実行すると、範囲内の全セルを横向きに処理することがわかる。 色つきのセルが見つかった段階で次の行の探索に移るコードがやや 面倒。 それであれば色つきのセルが見つかった段階で行をコピーし貼り付け しループを抜ける(Exit For)ほうが簡単な書き方になるので、下記がよかろう ーー 質問例はG列~R列だがG-I列に変えた。なるべくA列に近い例にせよ。 >G列~R列内 下辺行というものが有るだろう。列指定でなく範囲指定のほうが具体的。それで10行目までの例にした。プログラムで最終行を探す手も有るが。 コピー先の列が質問に書いてない。同じ列からとしたが、質問には心配りせよ。 以上は下記のコードを、質問者の要修正点でもある。 多分1番コード行数が少ないのではないかな。 ーーーー Sub test02() Dim sh1, sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") For i = 1 To 10 For j = 7 To 9 'G-I列の例 If sh1.Cells(i, j).Interior.ColorIndex <> xlNone Then MsgBox sh1.Cells(i, j).Address d = sh2.Range("i65536").End(xlUp).Row sh1.Range("G" & i & ":I" & i).Copy sh2.Cells(d + 1, 7) 'I列から Exit For End If Next j Next i End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

例えば、 データシートが、Sheet1 転記のシートが、Sheet2 というようにシート名が決まっている場合のコードは書けるのでしょうか。 もし、それも書けないということであれば、 >次のシートにコピーしたい これは次の段階のような気もしますが。。。 (別に難しいと言ってるわけではありませんが) ま、それは置いといて、 質問の文言どおりに アクティブシートのG~R列で色付きセルがあったら その行を アクティブシートの「次の」シートへコピーする場合 '------------------------------------------  Sub test()  Dim R As Long  Dim Clm As Long  Dim Cnt As Long  Dim NextSheet As Worksheet  Set NextSheet = Worksheets(ActiveSheet.Index + 1)  NextSheet.Cells.Clear  For R = 1 To Cells(Rows.Count, "G").End(xlUp).Row    For Clm = 7 To 18      If Cells(R, Clm).Interior.ColorIndex <> xlNone Then        Cnt = Cnt + 1        Rows(R).Copy NextSheet.Cells(Cnt, "A")        Exit For      End If    Next Clm  Next R End Sub '--------------------------------------------- なお、G列で最終行を取得していますので データの最終行のG列には何らかのデータがないといけません。 以上、ここまで。  

全文を見る
すると、全ての回答が全文表示されます。
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

単純に1行ずつ処理をするものを、ループさせればできると思います。 おおむねこんな感じ(他にも方法はあると思います) 1)準備として、「次のシート」へ記録する行のインデックス変数(あるいは  Rangeでもよい)を用意しておきます。 2)対象範囲を確定するために、G~R列の(データの入っている)最大行  を取得する。(1行目?からこの行まで処理をすればよいことになる。) 3)これ以降について(3~5)↑で取得した行までループで繰り返す  対象とする1行で、G~R列までの各セルに色がついているか調べる。 4)色がついていたら  その行を、「次のシート」のインデックス変数が示す行へコピーし、  インデックス変数を1進めておく。(次にペーストする行を示すため) 5)色がついていない場合は、何もせずに次の行へ

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBで条件に合ったセルを含む行に色を付けたいのですが…

    VBで条件に合ったセルを含む行に色を付けたいのですが… 条件に合ったセルを含む行に色を付けたいのですが… いつもお世話になってます。 VB初心者ですが、こちらでご指導頂きながら勉強しております。 今回もアドバイスお願い致しますm(__)m G列~R列で"未作業"という文字が入ったセルがあれば、 その行に色を付けたいのです。 ただし、同じ行に"発注済"という文字が入ったセルがあれば、 行に色は付けなくてもよいです。 さらに、色の付いた行のみ次のシートにデータコピーしたいのですが… 何かよい方法はありますでしょうか?

  • セル内の2行をそれぞれ別のセルにコピーするマクロ

    A列にデータが入力されていたとします。 そのデータのうち、複数のセルで改行されて2行になっています。 改行されているセルをサーチし、1行目をB列のセルに、2行目をC列のセルに分割してコピーしたいと思います。 この様な方法は、マクロで可能でしょうか。 適切な関数があれば、ご教授いただきたいと思います。

  • マクロ セルの色を含むシート間のコピー貼り付け

    このようなことが、できるでしようか。お教え下さいませんか。 シート1のB2~P列の最終行を取得してコピー、シート2のA2のO列の間に貼り付けたい。 但し、シート1は関数処理していて、シート2には値だけを貼り付けたい時のマクロはどのようなコードにすればよいでしょうか。 また、罫線はそののままコピーして貼り付けたい。 更に、シート1のB2からB列の最終行までは、黄色のセルになっているので、それもシート2のA2~A列の最終行まで貼り付けることってできますか。 お教え頂けますでしょうか。よろしくお願いします。

  • 色なし行のコピー

    sheet1にA1:E700の表が有り、B列からE列までセルを黄色にした行がランダムに幾つも有ります。このとき、sheet2のA1から上に詰めて色なし行だけをコピーする記述教えてください。(例えば3行目がB列からE列まで黄色のセルだったら3行目はコピーしない)、よろしくお願いします。

  • 他シートの指定項番の行にコピーするマクロを作りたい

    現在Sheet1のA21からQ21の17個のセルにデータが入っています。(これは同じシート内の データが飛ぶようになっているので厳密には計算式が入っています。なぜならその個々のデータのセルが点在しているためです)また、E14に項番を入力するセルがあります。 そしてSheet2のA列に項番が振られており、B~R列のA行に17個の項目名が入っています。 このエクセルで、E14に項番を入れて実行すれば、Sheet1のA21からQ21のデータを Sheet2の先と同じ項番の行のB~R列にコピーするマクロを作りたいのですが うまくいきません。どのようなコード書けばよいのでしょうか;

  • Excelマクロで行を分割してコピーしたいのですが・・・

    いろいろなサイトで調べたのですが、方法が見つからずご質問させて頂きます。 Excelシートの中で値が入っている行まで順番に読み、A列のセルの値が'東京'かつB列の値が'2'以上の行があった場合に、その行をB列の値の数だけその行の下にコピーで挿入したいのですが、どのようなマクロにすれば良いかご教授頂けないでしょうか? 例) セルA1='東京' セルB1='3' の場合、 ---------------------------------- セルA1='東京' セルB1='1' セルA1='東京' セルB1='1' セルA1='東京' セルB1='1' ※セルB1を値の数だけ分割し、なおかつ値を'1'にする ※分割が終わったら、分割元の行を削除する ※その他の列の値はそのままコピーする 以上、宜しくお願い致します!

  • 任意の複数行をコピーするマクロ

    VBを勉強中の初心者です。 マクロの自動記録でシート1の5~6行目をシート2のセルA3へコピーすることはできました。マクロの内容は   Sheets("Sheet1").Select   Rows("5:6").Select   Selection.Copy   Sheets("Sheet2").Select   Range("A3").Select   ActiveSheet.Paste となっていました。 上記のシート1の5~6行目を任意の複数行(例えば A1 に 200306 A2 に 200307 A3 に 200307 A4 に 200307 A5 に 200308 A6 に 200309 A7 に 200309 のデータがあった場合、コピーしたい年月が 200307 の場合は A2 ~ A4 をシート2のA3へ)でコピーしたいのですが、どうすればよいのかどなたか教えて下さい。よろしくお願いします。

  • (Excel2003)すぐ左の最後の行までコピーするマクロを教えてください

    マクロ初心者です。 表記の件に就き、何卒ご教授の程、宜しくお願いします。 ・エクセルで以下のような表があるとします。 __A__B__C__D→ 1_数量_単価_金額 2_4,000_100_=B3*C3 3_5,000_200_ 4_3,000_120_ 5_5,000_160_ ↓ ・そしてこのAとB列が毎回下に増えるとして、C2セルの数式を  B列の最後の行までコピーするマクロを教えて下さい。 (実際は、C2セルにVLOOK関数が入っており、最終行は何千行まであります) 何卒ご教授の程、宜しくお願い申し上げます。 

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

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

  • マクロでコピーしたセルを4行目毎に挿入する方法

    こんにちは!よろしくお願いいたします。 Excel2003で計算式が入力されている1行をコピーして 4行目にコピーしたセルを挿入したいのですが、複数 あるため、マクロを作りたいと思っています。   A   B  C 1 氏名 住所 件数  → 計算式が入力されている 2 氏名 住所 電話 3 氏名 住所 郵便 4 氏名 住所 ふりがな            → 1行目の計算式も含めコピーしたい この操作を繰り返すマクロを作成したいと思っています。 マクロは初心者です。ご指導よろしくお願いいたします。