2016-08-16 5 views
1

Я создал строку, разделенную запятой. Я хочу использовать эту строку в качестве входных данных в процедуре Application.Run.Используйте запятую в качестве параметров функции

Строка выглядит точно так же, как показано ниже - в кавычках ..

MyString = "First_Number", "Second_Number", "Third_Number" 

Я хочу использовать эту строку в качестве входных параметров:

Application.Run("'" & "Book2.xlsm" & "'!MySub", *MyString*) 

Он не работает .. я получаю " аргумент не оптимален ".

Я строю строку со следующим кодом, а диапазон - это просто строка с параметрами.

Function csvRange(myRange As Range) 

Dim csvRangeOutput 

For Each entry In myRange 
    csvRangeOutput = csvRangeOutput & entry.Value & """, " & """" 
Next 
csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 4) 

End Function 

Надеюсь, что кто-то может помочь.

+1

У меня действительно нет времени, чтобы ответить полностью, но взгляните на это: https://stackoverflow.com/questions/30536949/custom-menu-passing-a-worksheet-variable-through-onaction VBA смешно с подсчетами котировок, поэтому убедитесь, что debug.print и убедитесь, что каждый тип переменной имеет соответствующее количество котировок вокруг него. –

+2

Просто передайте в одной строке, например 'MyString =" first_number, second_number, third_number ", а затем в' MySub' используйте 'Split', чтобы разделить ее на отдельные аргументы и использовать по мере необходимости? – Dave

+0

Откуда вы получаете значения для 'MyString'? Они различаются по количеству? Как насчет ParamArray? – Brian

ответ

1

Оценка может сделать трюк. Посмотрите на этот купон тестового кода:

Sub Test() 
    Dim params As String 
    params = "3,5" 
    Debug.Print Evaluate("addNumbers(" & params & ")") 
End Sub 

Function addNumbers(a As Integer, b As Integer) As Integer 
    addNumbers = a + b 
End Function 

Это код, который пишет код, как выходить! : D

+0

Я не могу заставить его работать со строковыми параметрами. – Peter

0

Возможно, вы можете использовать что-то вроде этого.

String MyString = "First_Number, Second_Number, Third_Number"; 
String words[] = MyString.split(","); 

Затем используйте отдельные слова как слова [0], слова [1], и т.д.

или вы можете цикл через массив слов [] и использовать отдельные термины, как вам нравится.

Смежные вопросы