Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2016)
複数のシートのデータの値のみを1つのシートにコピーする
投稿日時: 19/06/12 19:44:17
投稿者: Yamachan0916

以下のVBAを利用したいと思っていますが、貼り付けの際に値のみにするにはどうしたらいいか教えてください。
 
Sub Sample()
    Dim sWS As Worksheet 'データシート(コピー元)
    Dim dWS As Worksheet '集約用シート(コピー先)
   
    Set dWS = Worksheets("AllData")
     
    '集約用シートの2行目以降を削除
    dWS.UsedRange.Offset(1, 0).Clear
     
    '各シートの2行目以降のデータを、集約用シートの末尾にコピー
    For Each sWS In Worksheets
        If sWS.Name <> dWS.Name Then
            With sWS.UsedRange
             
                'コピー元シートにデータが1件以上ある場合
                If .Rows.Count > 1 Then
                    .Offset(1, 0).Resize(.Rows.Count - 1).Copy _
                        Destination:=dWS.Cells(Rows.Count, 1). _
                                        End(xlUp).Offset(1, 0)
                End If
                 
            End With
        End If
    Next sWS
     
End Sub

回答
投稿日時: 19/06/12 20:46:40
投稿者: WinArrow
投稿者のウェブサイトに移動

Worksheets("Sheet2").Range("A2;H100").VALUE = Worksheets("Sheet1").Range("B2:I100").Value
 
のようなコードで「値」複写ができます。
 
=の左が複写先 右側が複写元です。
 
複写元のセル範囲と複写先のセル範囲を合わせる(領域範囲として)必要があります。
 
 
こんなヒントで対応できますか?
 

回答
投稿日時: 19/06/12 21:46:02
投稿者: simple

値のみコピーペイスト使ってはどうでしょう。
 
Sheet1のA1:A3セルを、Sheet2のA1:A3に、値のみコピーペイストする処理を
マクロ記録してみてください。

Sub Macro1()
    Sheets("Sheet1").Select
    Range("A1:A3").Select
    Selection.Copy
    Sheets("Sheet2").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
こんな風になるでしょう。
 
逐一Selectしているところを詰め、不要部分を削れば、こんなことになります。
Sub test()
    Sheets("Sheet1").Range("A1:A3").Copy
    Sheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteValues
End Sub

つまり、
複写元のセル範囲.Copy
貼付先の先頭セル.PasteSpecial Paste:=xlPasteValues

とすればよいわけです。
 
これをあなたの引用されたコードに適用してみてください。

投稿日時: 19/06/13 13:30:57
投稿者: Yamachan0916

WinArrowさん、simpleさん、ありがとうございます。
値だけをコピー/貼り付けできました。