2016-05-13 4 views
1

私はAccessで授業用資料のオーダーシートとして使用されるフォームを作成しています。利用可能なリソースがリストされ、ユーザーが希望する数量を入力するリソースの横にテキストボックスがあります。文字列と変数を使用するときに.valueプロパティを取得する

私のVBAコードは、以下のコードを使用してエントリが作成されているかどうかを確認します。 (私はヌル結果を可能にするためのNz()を使用しています):

「QuantCheckは」私はワークフローを開始しますIF文で使用しています変数です
QuantCheck = Nz(Box1.Value, 0) + Nz(Box2.Value, 0) + Nz(Box3.Value, 0) 

If QuantCheck > 0 Then 

私は希望します私は文字列から.valueを抽出することができません。私は.VALUEコールのベースとして(そうでない場合は、連結または)文字列を使用することはできませんよ、私が言うことができるものから

"Box"&VariableNumber.Value 

:私はループに組み込むことができる次のようなものが大好きです。

興味深いことに、です。これは、SQL文を使用しているときに実現します。私は他の場所でうまく動作するコードでこれを持っている:ここでは

SQLStr = "INSERT INTO OrderRequests VALUES (cbSchool, txtName, Title" & x & ".caption, Box" & x & ")" 

私はタイトル行を変更するには、各ループ、およびボックスラインに伴って増加する変数を「X」があります。

何か助けていただければ幸いです。

答えて

0

名前を確認するためにコントロールをループすることができます。そして、それがあなたが思っていたものですか?

Dim Ctrl As Control 

For Each Ctrl In Me.Controls 
    If Ctrl.Name = "TxtPath" Then ' "Box" & VariableNumber Then 
     MsgBox Ctrl.Value 
    End If 
Next 
1

コントロールの[タグ]プロパティを使用することをお勧めします。含めるコントロールのTagプロパティに「QuantCheck」を入れます。その後

Function QuantitiesExist(frm As Form) As Boolean 

    Dim Ctrl As Control 

    Const sQUANTCHK As String = "QuantCheck" 

    For Each Ctrl In frm.Controls 
     If Ctrl.Tag = sQUANTCHK Then 
      If Nz(Ctrl.Value) > 0 Then 
       QuantitiesExist = True 
       Exit For 
      End If 
     End If 
    Next Ctrl 

End Function 

は今、あなたは自己文書化コード

If QuantitiesExist(Me) Then 

を取得し、あなたが/削除/変更コントロールを追加するとき、あなたはあなたのコードを編集する必要はありません。適切なタグで新しいコントロールを設定するだけです。

関連する問題