[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでの繰り返し処理について』(ダンガイ)
[[20190312141756]] 『VBAでの繰り返し処理』(ダンモ)
『VBAでの繰り返し処理』(ダンモ)
VBAで下記の処理(マクロの記録にて作成)をもっと簡潔に
書けませんでしょうか。
なお、繰り返し処理はA列が空になるまで続けたいです。
よろしくお願いいたします。
(ダンモ)さんのこれに近いのですが、範囲が決まっているため、途中で切れる連続の形です。
B・C・D・E・F・G・Hを下記のように連続させたい。例えば("C31:C174")の範囲
だけで、連続コピーする。すると途中で7の倍数で収まらないことになる。次のセルC175からは、新たにBから始めるというようにしたいのですが、どうでしようか。
なお、この例と異なり、全体の範囲がC29:C297の範囲になります。
Range("R1:X1").Select Selection.Copy Range("C31").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True ActiveWindow.SmallScroll Down:=3 Application.CutCopyMode = False Selection.AutoFill Destination:=Range("C31:C174"), Type:=xlFillDefault Range("C31:C174").Select
Range("R1:X1").Select Selection.Copy Range("C175").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True ActiveWindow.SmallScroll Down:=6 Application.CutCopyMode = False Selection.AutoFill Destination:=Range("C175:C181"), Type:=xlFillDefault Range("C175:C181").Select
Range("R1:X1").Select Selection.Copy Range("C182").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True ActiveWindow.SmallScroll Down:=9 Application.CutCopyMode = False Selection.AutoFill Destination:=Range("C182:C241"), Type:=xlFillDefault Range("C182:C241").Select Range("C236:C241").Select Selection.Copy
Range("R1:X1").Select Application.CutCopyMode = False Selection.Copy Range("C242").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True ActiveWindow.SmallScroll Down:=9 Application.CutCopyMode = False Selection.AutoFill Destination:=Range("C242:C256"), Type:=xlFillDefault Range("C242:C256").Select
< 使用 Excel:Excel2013、使用 OS:Windows10 >
Sub 名もなきマクロ() Dim srcRNG As Range Dim tmp As Long
Set srcRNG = Range("R1:X1") tmp = srcRNG.Columns.Count
srcRNG.Copy Range("C31").PasteSpecial , Transpose:=True Range("C31").Resize(tmp).AutoFill Destination:=Range("C31:C174"), Type:=xlFillDefault
'↓まちがい? 'srcRNG.Copy 'Range("C175").PasteSpecial , Transpose:=True 'Range("C175").Resize(tmp).AutoFill Destination:=Range("C175:C181"), Type:=xlFillDefault
srcRNG.Copy Range("C182").PasteSpecial , Transpose:=True Range("C182").Resize(tmp).AutoFill Destination:=Range("C182:C241"), Type:=xlFillDefault
srcRNG.Copy Range("C242").PasteSpecial , Transpose:=True Range("C242").Resize(tmp).AutoFill Destination:=Range("C242:C256"), Type:=xlFillDefault
End Sub
また、コメントアウトしましたけど、
Selection.AutoFill Destination:=Range("C175:C181"), Type:=xlFillDefault
↑この部分、オートフィルの対象と出力先がどちらも「Range("C175:C181")」になりませんか?
(もこな2) 2019/03/19(火) 07:31
ダンガイさん
私が正しく理解していれば下記でOKです。
Sub test() Dim rng As Range, LR As Long, i As Long Const myStep As Long = 144, StartRow As Long = 31 LR = Range("a" & Rows.Count).End(xlUp).Row Set rng = Range("r1:x1") For i = StartRow To LR Step myStep rng.Copy If i + rng.Count > LR Then rng.Resize(, LR - i + 1).Copy Cells(i, "c").PasteSpecial Transpose:=True Else Cells(i, "c").PasteSpecial Transpose:=True With Cells(i, "c").Resize(rng.Count) .AutoFill .Resize(IIf(i + myStep - StartRow < LR, myStep, LR - i + 1)) End With End If Next End Sub (seiya) 2019/03/19(火) 12:08 修正:貼り付け先範囲がコピー元範囲より小さい時の処理追加 : 12:30
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.