人生で一番お金がなかったとき

下記コード(複数のシートの纏め)で、値のみをコピーする手法を教えて戴きたくお願いします。

Sub matome()
 Dim Sh
 Dim i As Integer
 Dim lRow As Long, lCol As Long, lRow2 As Long
  Application.ScreenUpdating = False
 
 '----列見出しをコピーします
  Worksheets(2).Range("1:1").Copy Worksheets(1).Range("A1")
  '----コピーする順番にシート名を配列Shに登録します
  Sh = Array("Sheet1", "Sheet2", "Sheet3")
  For i = LBound(Sh) To UBound(Sh)
    With Worksheets(Sh(i))
      lRow = .Cells(Rows.Count, 1).End(xlUp).Row
      lCol = .Cells(1, Columns.Count).End(xlToLeft).Column
      If lRow >= 2 Then
        lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
        .Activate
        .Range(Cells(2, 1), Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1)
      End If
    End With
  Next i
  Worksheets(1).Activate
  Range("A1").Select
  Application.ScreenUpdating = True
End Sub

A 回答 (1件)

参考になるかわかりませんが


Sub macro2()
Dim Sh
Dim i As Integer
Dim lRow As Long, lCol As Long, lRow2 As Long
Application.ScreenUpdating = False
'----列見出しをコピーします
Worksheets(2).Range("1:1").Copy Worksheets(1).Range("A1")
'----コピーする順番にシート名を配列Shに登録します
Sh = Array("Sheet1", "Sheet2", "Sheet3")
For i = LBound(Sh) To UBound(Sh)
With Worksheets(Sh(i))
lRow = .Cells(Rows.Count, 1).End(xlUp).Row
lCol = .Range("a1").CurrentRegion.Columns.Count
If lRow >= 2 Then
lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
.Activate
.Range(Cells(2, 1), Cells(lRow, lCol)).Copy
Worksheets(1).Cells(lRow2, 1).PasteSpecial Paste:=xlPasteValues
End If
End With
Next i
Worksheets(1).Activate
Range("A1").Select
Application.ScreenUpdating = True
End Sub
    • good
    • 1

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