10代と話して驚いたこと

---------------------------------------------------------------------------------------------------------
Option Explicit
Public Sub motolist()
Const sh1 As String = "29.4月実績" 'コピー元シート
Const sh2 As String = "元データ(201607~)" 'コピー元シート
Const sh3 As String = "リスト" 'コピー元シート
Dim maxRow1 As Long 'コピー元最大行
Dim maxrow2 As Long 'コピー先最大行
Dim maxrow3 As Long 'コピー先最大行
Dim rg1 As String
Dim rg2 As String
Dim rg3 As String
maxRow1 = Worksheets(sh1).Cells(Rows.Count, "A").End(xlUp).Row 'コピー元のA列最大行取得
maxrow2 = Worksheets(sh2).Cells(Rows.Count, "A").End(xlUp).Row 'コピー先のA列最大行取得
maxrow3 = Worksheets(sh3).Cells(Rows.Count, "A").End(xlUp).Row 'コピー先のA列最大行取得
MsgBox ("maxrow1=" & maxRow1 & " maxrow2=" & maxrow2 & " maxrow3=" & maxrow3) '①追加
rg1 = "A2:AD" & maxRow1
rg2 = "A" & (maxrow2 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh2).Range(rg2)
rg1 = "D2:D" & maxRow1
rg3 = "A" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
rg1 = "H2:I" & maxRow1
rg3 = "B" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
rg1 = "K2:L" & maxRow1
rg3 = "D" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
rg1 = "AE2: AI" & maxRow1
rg3 = "F" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
End Sub
---------------------------------------------------------------------------------------------------------
以前、上記マクロをご教授頂いたのですが、
下記のところだけF列へ貼り付けをする際、値で貼り付けをしたいです。
Sh1のAE:AI列に数式が入っている為です。

rg1 = "AE2: AI" & maxRow1
rg3 = "F" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)

値で貼り付けというのが「PasteSpecial Paste:=xlPasteAll」というのは調べてわかったのですが
どう繋げたら良いのか?ご教授頂ければ幸いです。

何卒、ご教授願います。

A 回答 (4件)

例えば値だけを貼り付ける例(2行にする)


xlPasteAllだと、値も式も色も背景、罫線なども全てが貼り付きます。


Worksheets(sh1).Range(rg1).Copy Worksheets(sh2).Range(rg2)

Worksheets(sh1).Range(rg1).Copy
Worksheets(sh2).Range(rg2).PasteSpecial Paste:=xlPasteValues
    • good
    • 2
この回答へのお礼

ご教授頂きましてありがとうございます。
値を張り付けるのは2行にするのですね。
とても勉強になりました。
無事解決いたしまいた。
ありがとうございました。

お礼日時:2017/05/16 13:22

欲しいのが値だけなら「コピー&ペースト」である必要がそもそもない


はずです。範囲の値を代入するだけでいいですよね。
    • good
    • 1

こんにちは!



>PasteSpecial Paste:=xlPasteAll
は、セルの数式・書式も含めてそのままコピー&ペーストされます。
「値」のみ貼り付けにしたい場合は

Worksheets(sh1).Range(rg1).Copy
Worksheets(sh3).Range(rg3).PasteSpecial Paste:=xlPasteValues

といった感じにしてはどうでしょうか?m(_ _)m
    • good
    • 1
この回答へのお礼

tom04さま
いつもご教授いただきましてありがとうございます。
無事解決いたしました。
ありがとうございました。

お礼日時:2017/05/16 13:22

こんにちは



通常のコピーとは違って、一度には全部の処理ができないので、一旦クリップボード上にコピーしてから、PasteSpecialでペーストしてください。

具体的なコードサンプルはこんな感じです。(↓)
https://msdn.microsoft.com/ja-jp/library/office/ …
    • good
    • 1
この回答へのお礼

fujillinさま
いつもご教授頂きましてありがとうございました。
サンプルコード参考にさせて頂きます。
ありがとうございました。

お礼日時:2017/05/16 13:23

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


おすすめ情報