2017-04-11 5 views
-2

以下のコードでは、 の値がkk1 = "1"、kk2 = "2"、kk3 = "3"、kk4 = "4" 。実現することができる選択のケースなステートメントを使用することによりforループ内の実行時変数の値を読み取る

代わりKK1、KK2、KK3及びKK4の私はメッセージボックスが一、二、三と四を表示したい

For i = 1 To 4 
    vari_value = "kk" & i 
    MsgBox vari_value 
Next 
+0

ここでは、「kk1 = "one"」などと指定されていません。 – Gustav

+0

[参照変数名のエクセルvba]の可能な複製(http://stackoverflow.com/questions/18336006/reference-variable-name -in-excel-vba) – Andre

+0

これはできません。代わりに配列を使用してください。 – Andre

答えて

1

、ループ以下のコードを参照してください。 4から1から、 "KK2"、 "KK3"、 "KK4"

Public Sub run() 
For i = 1 To 4 
vari_value = "kk" & i 
Select Case vari_value 
    Case Is = "kk1" 
     MsgBox "One" 
    Case Is = "kk2" 
     MsgBox "Two" 
    Case Is = "kk3" 
     MsgBox "Three" 
    Case Is = "kk4" 
     MsgBox "Four" 
End Select 
'MsgBox vari_value 
Next 
End Sub 

希望値 "KK1" で、これはあなたの問題を解決します。

+0

実際に@Nishit、KK1、KK2、KK3、KK4はサンプル値を持つフォーム変数です - "One"、 "Two"、 "Three"& "Four" 私は欲しい固定値でないメッセージボックスに表示されるKK1、KK2、KK3、KK4の値 – user7850661

+0

あなたが持つ変数の数は、コード化可能な場合はこれを使用できます。そうでなければ、vbaはVBAで変数名を動的に構築できません。あなたが必要とするものをより具体的に教えてください。 –

+0

KK1、KK2、KK3をダイナミック変数として定義したい場合、それはできません。単純な理由から、LHSまたはRHSまたはその両方を使用するには静的でなければなりません。 あなたの場合、vari_valueの値が1番目のintanceのKK1 = "One"である場合、 "i"の値が増分されるとすぐにKK1がKK2に変更されるので、KK1は失われます –

関連する問題