Вставить как значения

#excel #vba #copy-paste

#excel #vba #копировать-вставить

Вопрос:

Мне действительно нужна помощь в вставке следующего набора данных в качестве значений.

В настоящее время я хочу просмотреть определенные листы в своей рабочей книге и скопировать и вставить данные из выбранных.

Однако я не уверен в том, как вставить данные, с которыми я справляюсь, в качестве значений.

Я написал следующий код для перебора нужных мне листов, а также для выбора нужной даты на каждом листе. Однако, когда я вставляю эти данные на вкладку Основные данные, я, похоже, не могу вставить как значения.

     Sub exa()
Dim wks As Worksheet

For Each wks In ThisWorkbook.Worksheets
If Not wks.Name = "Master Data" _
And Not wks.Name = "Query --->" _
And Not wks.Name = "Pivot Portfolio Movement" _
And Not wks.Name = "PortfolioMovement - All" _
And Not wks.Name = "Bank Holidays" _
And Not wks.Name = "Property" _
And Not wks.Name = "Postcodes" _
And Not wks.Name = "Product" _
And Not wks.Name = "PartRedemption" _
And Not wks.Name = "Wrap" _
And Not wks.Name = "Completions Database" _
And Not wks.Name = "Default" _
And Not wks.Name = "ReturningBorrower" _
And Not wks.Name = "Extensions" _
And Not wks.Name = "PortfolioMovement" _
And Not wks.Name = "Drawdowns" _
And Not wks.Name = "Dev Interest WIP" _
And Not wks.Name = "Write Off Loans" _
And Not wks.Name = "Interest Rate" _
And Not wks.Name = "Admin" _
And Not wks.Name = "Datatape --->" _
And Not wks.Name = "Data" _
And Not wks.Name = "Drawn Balance by Loan" _
And Not wks.Name = "Sheet1" Then
wks.Range("H2:N2" amp; wks.Cells(Rows.Count, "N").End(xlUp).Row).Copy _
Destination:=Worksheets("Master Data").Cells(Rows.Count, "A").End(xlUp).Offset(1)
End If
Next
End Sub
  

Комментарии:

1. Копировать>> Вставить — это код из 2 строк: wks.Range("H2:N2" amp; wks.Cells(Rows.Count, "N").End(xlUp).Row).Copy и Worksheets("Master Data").Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial xlPasteValues

Ответ №1:

Чтобы вставить как значения, вам нужно использовать диапазон.Вставить специальный метод: .PasteSpecial xlPasteValues

Обратите внимание, что если вы используете массив для пропускаемых листов, вы можете сократить свой код следующим образом:

 Option Explicit

Public Sub exa()
    Dim SkipWorksheets As Variant
    SkipWorksheets = Array("Master Data", "Query --->", "Pivot Portfolio Movement", "PortfolioMovement - All", _
                           "Bank Holidays", "Property", "Postcodes", "Product", "PartRedemption", "Wrap", _
                           "Completions Database", "Default", "ReturningBorrower", "Extensions", _
                           "PortfolioMovement", "Drawdowns", "Dev Interest WIP", "Write Off Loans", _
                           "Interest Rate", "Admin", "Datatape --->", "Data", "Drawn Balance by Loan", "Sheet1")


    Dim Wks As Worksheet
    For Each Wks In ThisWorkbook.Worksheets
        If Not (UBound(Filter(SkipWorksheets, Wks.Name)) > -1) Then
            Wks.Range("H2:N2" amp; Wks.Cells(Rows.Count, "N").End(xlUp).Row).Copy
            Worksheets("Master Data").Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial xlPasteValues
        End If
    Next Wks
End Sub