2016-12-15 3 views
0

私は多くのテキストとコンボボックスをユーザーフォームにアクセスしています。私は、彼らの更新イベントのためにvbaコードを書く過程にあります。ボタンの多くは同じコードを持っているので、私は複数のコンボとテキストボックスで使用できる関数を書いています。エラーのないアクセスvbaでカスタム関数を作成しても結果が表示されません。

私はこの例のために私のコードの小さな部分を使用するつもりだ、

Option Compare Database 
Function comboboxupdate(RowNumber As Variant) 

     Dim x As Variant 
     Dim y As Variant 

     x = "tb_LbrRate" & RowNumber & ".Value" 
     y = "cb_op" & RowNumber & ".Value" 
     x = DLookup("LaborRate", "tblOperationsType", "[operationsID]" = y) 

End Function 

Private Sub cb_op1_AfterUpdate() 

     Call comboboxupdate(1) 
     'tb_LbrRate1.Value = DLookup("LaborRate", "tbloperationsType", "[operationsID] = cb_op1.value") 

End Sub 

私はエラーを取得していないサブルーチンと関数をステップ実行すると、私が上で、私のマウスをホバリングするとき、私は気づきましたキャプションに表示されたxおよびy変数 x = "tb_LbrRate1.value" y = "cb_op1.value"これは連結のように見える が正しく動作していますが、値の周りに引用符を残していますが、私は不思議ですね??そう、...代わりに tb_LbrRate1.value =のDLookup( "laborRate" の "tb_LbrRate1.value" =のDLookup( "laborRate" ...最後に

更新サブルーチン作品の後でのコメントコードを

意味私はちょうどこれをエミュレートする関数が必要ですが、複数のコンボボックスやリストボックスで作業する柔軟性があります。

答えて

1

この文は変数xの値を変更しているだけで、texbox control which's name is xを参照していません。このスレッドの関数GetControlByNameと同じ名前でのコントロール:Name of object changes in function

あなたは次のことができます:

Dim x as Object, y as object 
set x = GetControlByName("tb_LbrRate" & RowNumber) 
set y = GetControlByName("cb_op" & RowNumber) 
x.Value = DLookup("LaborRate", "tblOperationsType", "[operationsID] = " & y.Value) 
関連する問題