2016-08-16 10 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]、等

たりすることができ、アレイワード[]と好きなように、個々の用語を使用することによりループ。

関連する問題