Excel2003、OSはXPを使っています。
コピー元はブックAのL2からスタートして1行ずつをコピーし
コピー先はブックBのC12からスタートして10行飛ばしでペーストする。
コピー元のL列に空白セルが来たらやめたいと考えています。
具体的には
コピー元 -> コピー先
ブックA --> ブックB
Sheet1 --> Sheet1
L2 ------> C12
L3 ------> C22
L4 ------> C32
・
・
コピー元に空白セルが来たらやめる
といったイメージです。
初めてまだ3日程度なのでお恥ずかしいのですが、
以下のようなコードを作りましたが、a=の行で
「実行時エラー'9' インデックスが有効範囲にありません。」
と出てしまいます。
Dim a As Long
Dim dc As Long
Dim dct As Long
a = Worksheets(bbk).Range("L2").End(xlDown).Rows '←実行時エラー'9'
For dc = 2 To a
For dct = 12 To dc + 10
Workbooks("ブックA.xls").Worksheets("Sheet1").Range("L" & dc).Copy _
Workbooks("ブックA.xls").).Worksheets("Sheet1").Range("C" & dct)
Next dct
Next dc
恐らく他にも悪いところはあるかと思いますが、
どうかご教授をおねがいします。
No.2ベストアンサー
- 回答日時:
sub macro1()
dim i as long, j as long
i = 2
j = 12
do until worksheets("コピー元").cells(i, "L") = ""
worksheets("貼り付け先").cells(j, "C").value = worksheets("コピー元").cells(i, "L").value
i = i + 1
j = j + 10
loop
end sub
sub macro2()
dim i as long
for i = 2 to worksheets("コピー元").range("L65536").end(xlup).row
worksheets("貼り付け先").cells(10*(i - 1)+2, "C").value = worksheets("コピー元").cells(i, "L").value
next i
end sub
sub macro3()
dim c as long, h as range
c = 2
for each h in worksheets("コピー元").range("L2:L" & worksheets("コピー元").range("L65536").end(xlup).row)
c = c + 10
h.copy destination:=worksheets("貼り付け先").cells(c, "C")
next
end sub
回答ありがとうございます!
同じ処理でもこんなに表現方法があるのですね。
改めて奥の深さを痛感いたしました。
この中で最も行数が少ないmacro2をいただきます。
ありがとうございました。
No.3
- 回答日時:
こんばんは!
コピー&ペーストのコードではないのですが・・・
一例です。
↓のコード内でBook1 は「ブックA」に! Book2は「ブックB」と実際のBook名に変更してマクロを実行してみてください。
Sub test()
Dim i As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Workbooks("Book1.xls").Worksheets("sheet1") '←Book名は適宜変更
Set ws2 = Workbooks("Book2.xls").Worksheets("sheet1") '←こちらのBook名も適宜変更
ws2.Cells(12, 3) = ws1.Cells(2, 12)
For i = 3 To ws1.Cells(Rows.Count, 12).End(xlUp).Row
If ws1.Cells(i, 12) = "" Then Exit For
ws2.Cells(Rows.Count, 3).End(xlUp).Offset(10) = ws1.Cells(i, 12)
Next i
End Sub
こんな感じではどうでしょうか?m(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Excel(エクセル) エクセルのマクロを教えてください 2 2022/05/13 10:21
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで行ごとコピー、同じ行を...
-
PDFの一部を切り取って別のシー...
-
塗りつぶしの色をコピーするには
-
Excelで、決まった行を繰り返し...
-
【エクセル】表の中の文字だけ...
-
C+vのvは英語で何の頭文字...
-
WORDのグレー括弧って?
-
VBAのテキストボックスに文字列...
-
コピー&貼り付けの仕方を教え...
-
ペーストのVって
-
数式による空白を無視して最終...
-
セルに値がある行のみを抽出す...
-
Excel 3列毎のセルを別の表に抽...
-
EXCEL 1つ飛ばしのセル参照
-
【Excel】数式をそのまま他のシ...
-
マイナスの場合「xxxx-」...
-
xpsファイルをexcelに張り付けたい
-
Twitterで、いいねしてくれた人...
-
空白行を無視してコピーするマ...
-
Adobe Acrobat DCのスナップシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで行ごとコピー、同じ行を...
-
PDFの一部を切り取って別のシー...
-
塗りつぶしの色をコピーするには
-
C+vのvは英語で何の頭文字...
-
【エクセル】表の中の文字だけ...
-
Excel 3列毎のセルを別の表に抽...
-
Excel フィルターを掛けた状態...
-
WORDのグレー括弧って?
-
セルに値がある行のみを抽出す...
-
VBAのテキストボックスに文字列...
-
エクセルでコピーしたものをコ...
-
マイナスの場合「xxxx-」...
-
エクセルでマクロにてセル色と...
-
コピーされたセルの文字が途中...
-
EXCEL 1つ飛ばしのセル参照
-
数式による空白を無視して最終...
-
コピー&貼り付けの仕方を教え...
-
エクセルVBAでコピーすると行の...
-
Wordの「背景色を消す方法」教...
-
エクセル VBA・マクロ コピー ...
おすすめ情報