2016-05-13 101 views
1

我在Access中創建一個表單,該表單將用作教室材料的訂單。我列出了可用的資源,並在用戶輸入他們需要的數量的資源旁邊有一個文本框。使用字符串和變量時獲取.value屬性

我的VBA代碼檢查是否有任何條目通過使用以下。 (我使用NZ(),以允許空的結果):

QuantCheck = Nz(Box1.Value, 0) + Nz(Box2.Value, 0) + Nz(Box3.Value, 0) 

其中「QuantCheck」是我使用中開始工作流程中的IF語句中的變量:

If QuantCheck > 0 Then 

我想通過使用某種循環語句來清理它,但是我無法從字符串中提取.value。我喜歡像下面這樣,我可以納入一個循環:

"Box"&VariableNumber.Value 

從我可以告訴,我不能夠使用字符串(串聯或以其他方式)作爲基地.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 

而當你添加/刪除/變更控制,您不必編輯代碼。只需使用適當的標籤設置新的控件即可。