プロが教えるわが家の防犯対策術!

VB初心者です。
こちらでご指導頂きながら勉強しております。
今回もどなたかご教授お願い致します。

G列~R列内の色の付いたセルを含む行を
次のシートにコピーしたいのですが…
マクロを組んで実行したいと思っております。

どなたかアドバイス宜しくお願い致します。

教えて!goo グレード

A 回答 (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
    • good
    • 0

例えば、


データシートが、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列には何らかのデータがないといけません。

以上、ここまで。
 
    • good
    • 1

単純に1行ずつ処理をするものを、ループさせればできると思います。



おおむねこんな感じ(他にも方法はあると思います)
1)準備として、「次のシート」へ記録する行のインデックス変数(あるいは
 Rangeでもよい)を用意しておきます。

2)対象範囲を確定するために、G~R列の(データの入っている)最大行
 を取得する。(1行目?からこの行まで処理をすればよいことになる。)

3)これ以降について(3~5)↑で取得した行までループで繰り返す
 対象とする1行で、G~R列までの各セルに色がついているか調べる。

4)色がついていたら
 その行を、「次のシート」のインデックス変数が示す行へコピーし、
 インデックス変数を1進めておく。(次にペーストする行を示すため)

5)色がついていない場合は、何もせずに次の行へ
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング