Использование переменной для имени листа в Excel VBA VLookup

Private Sub UpdateBoxes()
    Dim wsFunc As WorksheetFunction: Set wsFunc = Application.WorksheetFunction
    Dim sheet As String
    If Range("C1") = "some string" Then
        sheet = "SomeSheet"
    End If

    Range("B6").Value = Sheets("Spreadsheet Ctrl").Range("B7") 'Sets title of Box 1 based on Spreadsheet Ctrl
    Range("G6").Value = Sheets("Spreadsheet Ctrl").Range("C7") 'Sets title of Box 2 based on Spreadsheet Ctrl
    Range("B11").Value = Sheets("Spreadsheet Ctrl").Range("D7") 'Sets title of Box 3 based on Spreadsheet Ctrl
    Range("G11").Value = Sheets("Spreadsheet Ctrl").Range("E7") 'Sets title of Box 4 based on Spreadsheet Ctrl
    Range("B16").Value = Sheets("Spreadsheet Ctrl").Range("F7") 'Sets title of Box 5 based on Spreadsheet Ctrl
    Range("G16").Value = Sheets("Spreadsheet Ctrl").Range("G7") 'Sets title of Box 6 based on Spreadsheet Ctrl

    Range("C7").Value = wsFunc.VLookup(B6,'" & sheet & '"!A1:G5,3,)" 'Vlookup for "Current Revision
End Sub

Переменная «лист» в конечном итоге изменится на основе вложенного if. Затем его следует передать в последнюю строку кода перед End Sub. Я получаю сообщение об ошибке компиляции "Ожидается: выражение", и оно выделяет первый тик в '" & sheet & '".


person Drexl    schedule 07.10.2013    source источник


Ответы (1)


Что-то типа:

Range("C7").Value = wsFunc.VLookup(ActiveSheet.Range("B6"), _
                                   Sheets(sheet).Range("A1:G5"),3,False)
person Tim Williams    schedule 07.10.2013
comment
Range("C7").Value = wsFunc.VLookup(ActiveSheet.Range("B6"), Sheets(sheet).Range("A1:G5"), 3,) 'Vlookup for "Current Revision" Это приводит к ошибке компиляции: Ожидание: выражение, которое выделяет последнюю закрывающую скобку. - person Drexl; 08.10.2013
comment
Ты восхитителен. Это сделало это. Спасибо! ^_^ Я не понимал, что это явно требуется, поскольку этого нет в стандартной формуле. - person Drexl; 08.10.2013