海外旅行から帰ってきたら、まず何を食べる?

エクセルマクロの使い方です。
A B C
1 10 20 30
2 40 50 60
3 70 80 90

5 10 20 30 ←コピー

5行目に1行目から3行目までのデータを1行ずつ連続コピー(上書き)するマクロを教えて下さい。

A 回答 (3件)

頓珍漢な回答をしてしまったようですね。

では、こんな感じでしょうか。
セルの指定方法について、インデックスでループさせる場合は「Range」ではなく「Cells」を使った方が分かりやすいかもしれませんが、あえてRangeのまま書いています。
それから、Selectは極力使わずに、シートを明示的に指定すべきです。

Sub 送付書印刷3()
Dim i As Long
For i = 4 To 35
If Sheets("計算表").Range("A" & i).Value = 1 Then
Sheets("計算表").Range("B" & i & ":F" & i).Copy _
Destination:=Sheets("送付書").Range("B11")
Sheets("送付書").Calculate
Sheets("送付書").PrintOut copies:=1
End If
Next
End Sub
    • good
    • 0
この回答へのお礼

大変ありがとうございました。
教えていただいた内容で1が入力された場合のみ印刷できました。
中途半端な質問で、返ってお手数をお掛けしたこと、お詫びいたします。
これからもVBAのスキルアップに取り組みます。

お礼日時:2019/03/31 08:32

上書きで良いのですよね?


ただ、そのままやっちゃうと必ず3行目と同じになっちゃうので、ちょっとアレンジして、「空白セルを無視する」でペーストしてみました。結果は添付画像のようになります。
ちなみに、「加算」とかでペーストしても面白いですよ。

Sub sample()
Dim r As Range
For Each r In Range("A1:C3").Rows
r.Copy
Range("A5").PasteSpecial , SkipBlanks:=True
Next r
Application.CutCopyMode = False
End Sub
「エクセルVBA」の回答画像2
    • good
    • 0
この回答へのお礼

早速にありがとうございます、動きました。
特定のセルに行情報を連続して表示させて次の処理に繋げられないかと考えました。質問が的確でなかった点、お許しください。
初めての投稿です。解決したい業務は以下のとおりです。
計算表と送付書の2シートがあります。計算書シートのBからF列に商品内容を記入。商品は30種類(4~35行)あります。
A列には送付書の印刷判断用として1を入力します。Aのセルに1が入力された商品の情報を送付書シートにコピーして1枚印刷(空欄でない商品の送付書を印刷)。
参考書を見ながら作ったマクロでは、1行(1商品)ずつ30回の記述が必要で、動きますがスマートではありません。追加のアドバイスが頂ければ幸甚に存じます。

Sub 送付書印刷()
Sheets("計算表").Select
If Range("A4") = 1 Then
Range("B4:F4").Copy
GoSub 印刷
End If
If Range("A5") = 1 Then
Range("B5:F5").Copy
GoSub 印刷
End If
If Range("A6") = 1 Then
Range("B6:F6").Copy
GoSub 印刷
End If
Range("A1").Select
Exit Sub
印刷:
Sheets("送付書").Select
Range("B11").Select
ActiveSheet.Paste
Sheets("送付書").PrintOut copies:=1
Return
End Sub

For~Nextという繰り返しマクロも理解できす、今回の質問に至りました。
Sub 送付書印刷2()
Dim i As Integer
For i = 1To 30
If Range("A4") = 1 Then
Range("B4:F4").Copy
Range("B11").Select
ActiveSheet.Paste
End If
Next
End Sub

お礼日時:2019/03/31 07:01

日本語が判りません。



5行目、6行目、7行目に、1行目、2行目、3行目のデータをコピーするということでしょうか?
それとも、5行目に、1行目2行目3行目のデータをまとめて1行に値をコピーするということでしょうか?
    • good
    • 2
この回答へのお礼

ありがとうございます。
5行目に1行目から3行目までのデータを1行ずつ3回連続で表示させて次の作業に繋げようと思いました。ご指摘のとおり、中途半端な質問になって失礼しました。
ママチャリさまへの回答に詳細を記入しました。解決までには道半ばの状態です。

お礼日時:2019/03/31 07:07

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