循环使用类似的命名标签,为Access Vba中的每个标签指定值
我正在Access 2010中构建一个日历,其中包含一个根据月份变化的页面。有标签循环使用类似的命名标签,为Access Vba中的每个标签指定值,vba,ms-access,for-loop,concatenation,Vba,Ms Access,For Loop,Concatenation,我正在Access 2010中构建一个日历,其中包含一个根据月份变化的页面。有标签lblDay1-lblDay37。如果月份是2018年2月,则第一个月将从星期四开始,其工作日值为4(使用vb星期四) For循环需要遍历每个lblDaylblDay4需要等于1,然后lblDay5=2,lblDay6=3等,最多28天 我遇到的问题是连接标签,如下所示 For i = 1 to 37 If i = Weekday(#01/02/2018#, vbMonday) Then "lbl
lblDay1
-lblDay37
。如果月份是2018年2月,则第一个月将从星期四开始,其工作日
值为4(使用vb星期四
)
For
循环需要遍历每个lblDay
lblDay4
需要等于1
,然后lblDay5=2
,lblDay6=3
等,最多28天
我遇到的问题是连接标签,如下所示
For i = 1 to 37
If i = Weekday(#01/02/2018#, vbMonday) Then
"lblDay" & i & ".Value" = 1
我不知道如何最好地修复第3行引发的错误。假设您选择使用文本框代替标签,您可以使用类似于以下函数的功能,用您的日数填充文本框:
Function PopulateDays(datRef As Date)
Dim datVar As Date
Dim intTbx As Integer
datVar = DateAdd("d", 1 - Weekday(datRef, vbMonday), datRef)
For intTbx = 1 To 37
Controls("txtDay" & intTbx).Value = Day(datVar)
datVar = DateAdd("d", 1, datVar)
Next intTbx
End Function
以上假设您的文本框命名为txtDay1
,txtDay2
,…,txtDay37
您可以调用上面的日期作为参考,以确定开始编号的星期
例如,要填充2月份的文本框,可以使用以下方法评估函数:
PopulateDays DateSerial(2018, 2, 1)
这将产生如下结果:
您正在将表达式指定给表达式,即该指令不执行VBA可以理解的任何操作。你想达到什么目标?您需要获得实际的
标签
对象,不能分配给这样的字符串设置label=Me.Controls(“lblDay”&i)
然后执行label.Value=1
。由于您使用的是标签,您需要修改标题
属性,因为标签没有值
属性。相反,我建议您使用文本框。