• 締切済み

No.769915 の続きです。

申し訳ありません、間違えて質問を締め切ってしまいました。 mshr1962さんに直して頂いた処理では、思ったとおりではありませんでした。説明不足で申し訳ありません。 やりたいことは、1回測定する毎にSheets("Result").Range("G20:I24")に入ってくるデータを、 SheetGRの表に貼り付ける作業をしたいのです。 1回目の測定結果はD7に貼付け、2回目の測定結果はD17へ…という具合で、10回目のD97まで貼付け終わったら、11回目からはM7~M97へコピー、21回目からはV7~V97へコピーをしたい。ということです。 今はマクロの実行ボタンをD列コピー用、M列コピー用、V列コピー用と分けていますが、できれば1つのボタンでできないかと思います。 分かり難くて申し訳ありません。意味不明であれば補足いたしますので、宜しくお願いします。  With sheetGR For ii = 7 To 97 Step 10(行の指定) For iii = 4 To 31 Step 9(列の指定) If .Cells(ii, iii) = "" Then .Range(.Cells(ii, iii), .Cells(ii + 4, iii + 2)).Value _ = Sheets("Result").Range("G20:I24").Value End If Exit For If Cells(97, iii) <> "" Then Next iii End If Next ii End With

みんなの回答

回答No.1

まずい点を列挙すると ・まずループの順番が間違ってます。(やりたいことと合っていない) ・Exit For が意味不明(無意味)です。(結局ループしない) ・Next iii をIf文の中に書いているので、Next iiiが実行されない場合が発生する。 最下行までコピーしたら次の列に移動してコピーを繰り返す処理をさせるなら 下記のようにすれば良いでしょう。 With sheetGR  For iii = 4 To 31 Step 9(列の指定)   For ii = 7 To 97 Step 10(行の指定)    If .Cells(ii, iii) = "" Then     .Range(.Cells(ii, iii), .Cells(ii + 4, iii + 2)).Value _     = Sheets("Result").Range("G20:I24").Value    End If   Next ii  Next iii End With ※インデントのために全角スペースを使ってます。 ※G20:I24にデータが入るのを待つ部分が無いけどいいのか?

nanami0310
質問者

補足

お礼が遅れて申し訳ありません。ありがとうございました。実行してみましたが、 ※G20:I24にデータが入るのを待つ部分が無いけどいいのか? にあります通り、これだと、1回の測定データが全ての表を埋めてしまいます(^^;) 以前、下記のようなマクロをTTakさんに組んで頂いたのですが、これだと、シートResultにデータが入る毎にマクロを実行すると、ちゃんとその回数の表の部分に入ってくれます。 For i = 4 To 248 Step 4 If .Cells(14, i).Value = "" Then .Range(.Cells(14, i), .Cells(22, i + 2)).Value _ = Sheets("Result").Range("M9:O17").Value Exit For End If Next i End With これを参考にして、列の指定だけでなく行の指定もできないものかと、思ったのですが。。。