2017-06-04 10 views
0

1つのパラメータを使用する関数を作成して、関数が別の値を返すようにしたいとします。この場合、関数に "リンク"を挿入したいのですが、関数は "左"を返す必要があります(私は '翻訳'が必要なので、if文の場合を使用します)リターン関数のコンパイルエラー

私は以下の関数

Public Function newParameter(aParameter) As Integer 
Select Case aParameter 
    Case Is = "Links" 
    aParameter = "ppAlignLeft" 
End Select 
End Function 

Sub finalFunction() 
Dim newParameter As String 
newParameter = newParameter(Links) 
MsgBox (newParameter) 
End Sub 

しかし、これは行列が必要であることを私はコンパイルエラーになります。私はこの作業を取得する方法上の任意の考えを?

+0

エドワード私は、コスタスが指摘しているように、あなたは機能とサブの使い分けを混乱させたと思います。関数は何らかのソートの値を返します。サブは何か特定のことを行います。それは微妙な違いです。私はそれを大きく単純化しましたが、彼の答えは正しいです。 – iShaymus

答えて

1

あなたは引数ByRefを渡し、それが価値だ変更している。あなたが必要といけません関数の戻り値。

あなたは関数を使用しているので、なぜ関数はあなたが望む値を返さないのですか?

Public Function newParameter(ByVal aParameter As String) As String 
Select Case aParameter 
    Case "Links": 
    newParameter = "ppAlignLeft" 
Case "A": 
    newParameter = "You passed A" 
Case Else: 
    newParameter = "No match" 
End Select 
End Function 

Sub finalFunction() 
Dim newParameter1 As String 
newParameter1 = newParameter("Links") 'This reads 'ppAlignLeft' 
MsgBox newParameter1 
End Sub 
関連する問題