2016-03-23 4 views
0

Ich habe ein Formular erstellt, das den "Status" von Projekten für jeden Monat anzeigt. Ich möchte die Spalten-/Kontrollfeldeigenschaften einmal zu Beginn eines jeden Monats aktualisieren (blenden Sie den aktuellen Monat im Laufe des Jahres ein). Da in den kommenden Monaten noch keine Daten vorliegen, habe ich den folgenden Code geschrieben.Durchlaufen Steuerelemente mit bestimmter Benennungsstruktur, um sichtbare Eigenschaft festzulegen

Public Function updateProgressForm() 

Dim currentMonth As String 
Dim currentYear As Long 
Dim txtDate As String 
Dim todaysmonth As Long 
Dim txtboxMonth As Integer 
Dim txtboxName As String 
Dim txtboxLabel As String 

todaysmonth = Month(Now()) 
currentMonth = MonthName(todaysmonth, 3) 
currentYear = Year(Now()) 
txtDate = currentMonth & " " & currentYear 

DoCmd.OpenForm "IndProgressTracking", acDesign, , , , acWindowNormal 
Forms!IndProgressTracking!Month12.ControlSource = txtDate 
Forms!IndProgressTracking!Month12Label.Caption = txtDate 

For txtboxMonth = 1 To 12 Step 1 
    txtboxName = "Month" & txtboxMonth 
    txtboxLabel = txtboxName & "Label" 
    If IsNull(txtboxName) Then 
    txtboxName.Visible = False 
    txtboxLabel.Visible = False 
    Else 
    txtboxName.Visible = True 
    txtboxLabel.Visible = True 
End If 
Next 

txtboxName = "Month1" 
Forms!IndProgressTracking.Controls!txtboxName.Visible = True 

End Function 

Der Teil, der mir einen Fehler gibt, ist die txtboxName.Visible es ungültig Qualifier erklärt. Daher habe ich stattdessen die letzten 2 Zeilen ausprobiert, aber die letzte Zeile (vor der Endfunktion) gibt an, dass sie das Steuerelement, auf das ich mich bezogen habe, nicht finden kann (txtboxName). Ich habe ein Textfeld und einen Aufkleber für jeden Monat, also ist es nicht eine große Sache, wenn ich jedes einzeln anrufen muss, indem ich den Kontrollnamen benutze, den ich nur hoffen wollte, indem ich die For-Schleife benutze. Irgendwelche Vorschläge sind willkommen!

Antwort

2

Sie haben txtboxName als Zeichenfolge und nicht als Steuerelement definiert.
Um die Steuerung durch seinen Namen Verwendung zu finden:

Forms!IndProgressTracking.Controls(txtboxname).Visible = True 
+1

Dank @HansUp - Ich versuche immer, meinen Code zu testen, auch wenn es nur 1 Zeile ist und manchmal vergessen, die richtigen Referenzen zurück in setzen. –

Verwandte Themen