Excel VBA - добавить столбец справа и заполнить текстом

Я хочу отредактировать свой существующий код (ниже), который копирует и вставляет таблицы между двумя книгами, чтобы сделать следующее:

  1. Добавить новый столбец справа от «vDB» (в конце), который является копией таблицы из wbTarget.
  2. Заполните весь столбец текстом «ИТОГО».
  3. затем вставьте его в другую книгу под названием "sht1"

    Dim vDB As Variant
    Dim sht1 As Worksheet
    Dim wbTarget As Workbook 
    
    'if sheet name is "TOTAL" then...
    If "TOTAL" = Sheet.Name Then
    
        'copy a given range from the target workbook
        vDB = wbTarget.Sheets(Sheet.Name).Range("b3:i102")
    
        'paste that range under existing data in the master workbook
        sht1.Range("a" & Rows.Count).End(xlUp)(2).Resize(UBound(vDB, 1), UBound(vDB, 2)) = vDB
    
    End If
    

Моя неудачная попытка:

    Dim vDB As Variant
    Dim sht1 As Worksheet
    Dim wbTarget As Workbook 

    If "TOTAL" = Sheet.Name Then

        vDB = wbTarget.Sheets(Sheet.Name).Range("b3:i102")

        With vDB
        .ListColumns.Add
        x = .ListColumns.Count
        .Range(2, x) = "Total"
        End With

        sht1.Range("a" & Rows.Count).End(xlUp)(2).Resize(UBound(vDB, 1), UBound(vDB, 2)) = vDB

    End If

Я получаю сообщение об ошибке «Требуется объект». Какие-либо предложения? Я довольно новичок в vba...


person Boosted_d16    schedule 26.07.2017    source источник
comment
что такое vDb ? это Worksheet? Range ? не так ясно.   -  person Shai Rado    schedule 26.07.2017
comment
Это диапазон (wbTarget.Sheets(Sheet.Name).Range(b3:i102))   -  person Boosted_d16    schedule 26.07.2017
comment
Вы копируете и вставляете между двумя книгами? или только wbTarget ?   -  person Shai Rado    schedule 26.07.2017
comment
Я копирую и вставляю между двумя книгами.   -  person Boosted_d16    schedule 26.07.2017
comment
и вы хотите добавить столбец в wbTarget или в лист вставок sht1 ?   -  person Shai Rado    schedule 26.07.2017
comment
я хочу вставить новый столбец в sht1   -  person Boosted_d16    schedule 26.07.2017


Ответы (1)


Добавьте приведенную ниже строку кода в конец вашего текущего кода:

' adding "TOTAL" to last column on the right
sht1.Range("A1").Offset(, UBound(vDB, 2)).Resize(UBound(vDB, 1) + 1, 1).Value2 = "TOTAL"
person Shai Rado    schedule 26.07.2017
comment
Это работает, но не динамично. Есть ли способ назначить Total каждой копируемой таблице? потому что этот код будет зациклен на многих файлах. Тем не менее, проголосуйте за усилия! - person Boosted_d16; 26.07.2017