2013-06-27 2 views
0

У меня есть программа макросов для выполнения некоторых операций, таких как Vlookup, удаление столбцов и т. Д. У файла, который будет обновляться, будет несколько листов в нем и каждый раз, когда имя и порядок рабочих листов могут быть разными. Таким образом, я хотел бы иметь возможность выбирать рабочий лист, который я хочу, каждый раз, когда я использую макрос. Тем не менее, я не был успешным .....Имя переменной таблицы

Это макрос. Я хотел, чтобы mySheet был переменным. В идеале, это может побудить меня выбрать рабочий лист, который я хочу в этом wbSource. Однако, я получаю ошибки. Кто-нибудь знает, как мне это сделать?

Заранее благодарен!

Sub Macro1() 
    Dim file1 As String 
    Dim file2 As String 
    Dim wbSource As Workbook 
    Dim wbLookup As Workbook 
    Dim startRange As Range 
    Dim mySheet As Worksheet 
    Dim col As Range 
    Dim Del As Range 


    file1 = Application.GetOpenFilename(Title:="Select the file to update") 
    If Len(Dir(file1)) = 0 Then Exit Sub 
    file2 = Application.GetOpenFilename(Title:="Select the LOOKUP file") 
    If Len(Dir(file2)) = 0 Then Exit Sub 

    Set wbLookup = Workbooks.Open(file2) 
    Set wbSource = Workbooks.Open(file1) 
    Set mySheet = wbSource.Sheets(ActiveSheet.Name) 



    On Error Resume Next 
    Application.DisplayAlerts = False 
    Set col = Application.InputBox _ 
      (Prompt:="Select Column.", _ 
        Title:="Where do you want to insert the columns?", Type:=8) 

    On Error GoTo 0 

    Application.DisplayAlerts = True 

    col.Resize(, 5).EntireColumn.Insert 





    On Error Resume Next 

    Application.DisplayAlerts = False 

    Set Del = Application.InputBox _ 
    (Prompt:="Select Column.", _ 
    Title:="Which column to delimit?", Type:=8) 


    On Error GoTo 0 
    Application.DisplayAlerts = True 


    Del.EntireColumn.Select '** ERROR HERE!! 

     Selection.TextToColumns _ 
     Destination:=Del, _ 
     DataType:=xlDelimited, _ 
     TextQualifier:=xlDoubleQuote, _ 
     ConsecutiveDelimiter:=False, _ 
     Tab:=False, _ 
     Semicolon:=False, _ 
     Comma:=False, _ 
     Space:=False, _ 
     Other:=True, _ 
     OtherChar:="-" 

    Del.Offset(0, 2).Delete 
    Del.Offset(0, 1).Delete 





    On Error Resume Next 
    Set startRange = Application.InputBox("Select the first cell for the formula", "Autofill VLOOKUP", Type:=8) 
    On Error GoTo 0 
    If Not startRange Is Nothing Then 
     Application.Goto startRange 
     startRange.FormulaR1C1 = "=VLOOKUP('[" & wbSource.Name & "]" & mySheet.Name & "'!RC[-1],'[" & wbLookup.Name & "]NON SLL'!C1:C3,3,FALSE)" 

    End If 

End Sub 
+0

нет ошибки в коде, который вы представили ... где у вас есть это точно и какой номер ошибки встречается? –

+0

Его последняя строка .. "Set mySheet = ......" Я хотел бы сделать рабочий лист, который в wbSource будет переменным. Это способ сделать это? Ошибка возникает ниже, когда я попытался удалить строку на этом листе. –

+0

Ваша последняя строка верна. давайте обсудим строки, которые вызывают ошибки (ошибки) ... –

ответ

0

Некоторые продолжение замечания и возможное объяснение проблем ...

Ваш код не делает никаких ошибок. Однако могут быть некоторые логические ошибки, которые вы должны учитывать. Эта строка кода:

Set wbSource = Workbooks.Open(file1) 

активировать только что открытую книгу (файл1). И следующая строка:

Set mySheet = wbSource.Sheets(ActiveSheet.Name) 

набора переменного листа в только что открытой книге (file1) и листе, который в настоящее время активно там. И общий вопрос - это правильно для логики дальнейшей части вашего кода?

+0

yea.Basically я хочу сделать vlookup.and файл 1 - это файл, который нужно обновить с помощью поиска значений из файла 2. После этого я хотел бы сделать разделитель и в файле 1. Также файл 1 будет активным файлом –

+0

Итак, @BenjaminAlonsoTan, добавьте больше кода на свой вопрос, отметьте строку, которая на самом деле вызывает ошибку и дает номер ошибки ... –