2016-07-24 56 views
0

我目前有一個更新事件後,它會循環顯示錶單中的文本框,並在其編號低於特定閾值數時切換其可見性。更新事件後,無法在MS Access中切換標籤的可見性

Dim i As Long  
     Dim iMin As Long  
     Dim iMax As Long  
     iMin = 1 
     iMax = Me.txtMeasure.Value 
     With Me 
      For i = iMin To iMax 
           .Controls("V" & i).Visible = True 
      Next i 
     End With 

的文本框被命名爲V1, V2, V3...V110等 「而對應於每個文本框的標籤標記lblV1lblV2lblV3lblV110等。」文本框和標籤默認爲不可見,而更新後事件切換其可見性。該代碼適用於文本框,但無法用於標籤。我注意到,雖然標籤看起來不可見,但切換到設計視圖然後返回窗體視圖,標籤突然顯現。有沒有一種方法可以調試,以便它們同時顯示?

+0

其中是將標籤設置爲可見的代碼? – 3per

+0

我是新來的訪問,這個代碼是通過另一個stackflow用戶提供給我的。我認爲,由於文本框和標籤被命名爲V1和lblV1,因此代碼會調整這兩者。 http://stackoverflow.com/questions/38510238/cycling-through-textboxes-on-form-in-ms-access – YoungsterJerry

+0

如果標籤附加到他們的文本框,他們應該自動設置爲可見/不可見與他們的父母文本框。 – Andre

回答

0

試試這個,它遍歷控制和如果它是一個textboxlabel你可以做你想要與他們的東西,我已經在這個代碼將它們設置爲Visible

Dim con As Control 
Dim i As Long 
Dim iMin As Long 
Dim iMax As Long 
Dim textBoxArr 
Dim j As Long 
     iMin = 1 
     iMax = Me.txtMeasure.Value 
    textBoxArr = Array("V1", "V2", "V3", "V4", "V5", "V6", "V7") 
    For Each con In Me.Controls  
     If TypeName(con) = "TextBox" Or TypeName(con) = "Label" Then 
      For j = 0 To UBound(textBoxArr) 
      If con.Name = textBoxArr(j) Or con.Name = "lbl" & textBoxArr(j) Then 
       con.Visible = True: Exit For 
      End If 
      Next j 
     End If 
    Next con 
+0

這使得所有110個文本框和標籤都可見。我只需要顯示與「Me.txtMeasure.Value」一樣多的文本框(因此原始的循環)。 – YoungsterJerry

+0

我無法爲你做到這一點。你需要測試'if'語句中的每個'control',並過濾出你想看到的那些。如果你不知道該怎麼做,請回到我身邊。 – KyloRen

+0

好的,我更新了代碼,至少測試了「textbox」和「Label」。您將不得不調整代碼以適應您的控件的名稱。 – KyloRen

0

您只能在代碼中添加一行。

 Dim i As Long  
     Dim iMin As Long  
     Dim iMax As Long  
     iMin = 1 
     iMax = Me.txtMeasure.Value 
     With Me 
      For i = iMin To iMax 
           .Controls("V" & i).Visible = True 
           .Controls("lbl" & i).Visible = True 
      Next i 
     End With