You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access日历开发:标签控件赋值触发Error 91(对象变量未设置)

解决MS Access VBA中「Object variable not set (Error 91)」错误

错误原因

你声明了ctl As Label变量,但未将其关联到窗体上实际存在的标签控件,直接对ctl.Name赋值时,ctl仍是未初始化的空对象,因此触发Error 91。

修正步骤

  1. 确保控件命名匹配:确认窗体上的标签控件命名规则为lbl[星期缩写][行号](例如lblMon1、lblTue1、lblSun2等),与代码中拼接的名称一致。
  2. 初始化控件对象:使用Me.Controls()方法获取对应名称的标签控件,赋值给ctl变量,而非直接修改ctl.Name。
  3. 修正代码其他隐患:
    • 变量lastnumday未声明类型,需添加声明语句;
    • 代码中SelectedDay应为SelectedDate(属于笔误);
    • 变量fdaynum需提前声明。

修正后的完整代码

Private Sub DisplayCalendar()
    Dim FirstDay As String
    Dim lastnumday As Integer ' 声明变量类型
    Dim iDay As Integer
    Dim ctl As Label
    Dim DaysArray(6) As String ' 数组下标0-6,无需设为7
    Dim fdaynum As Integer ' 新增变量声明
    Dim i As Integer, j As Integer ' 循环变量声明
    
    DaysArray(0) = "Mon"
    DaysArray(1) = "Tue"
    DaysArray(2) = "Wed"
    DaysArray(3) = "Thu"
    DaysArray(4) = "Fri"
    DaysArray(5) = "Sat"
    DaysArray(6) = "Sun"
    
    ' 修正SelectedDay为SelectedDate,用DateSerial构造当月第一天
    FirstDay = Format(DateSerial(Year(SelectedDate), Month(SelectedDate), 1), "ddd")
    ' 直接用Day函数获取当月最后一天,无需Format转换
    lastnumday = Day(DateSerial(Year(SelectedDate), Month(SelectedDate) + 1, 0))
    
    ' 找到当月第一天对应的星期下标
    fdaynum = -1
    For i = 0 To 6
        If DaysArray(i) = FirstDay Then
           fdaynum = i
           Exit For
        End If
    Next
    
    ' 处理fdaynum未找到的情况(避免后续逻辑出错)
    If fdaynum = -1 Then Exit Sub
    
    j = 1
    
    For iDay = 1 To lastnumday
        ' 获取对应名称的标签控件
        Set ctl = Me.Controls("lbl" & DaysArray(fdaynum) & j)
        ' 设置日期标题
        ctl.Caption = iDay
                
        ' 更新星期下标和行号
        If fdaynum = 6 Then
            fdaynum = 0
            j = j + 1
        Else
            fdaynum = fdaynum + 1
        End If
    Next
End Sub

额外说明

  • 如果运行时提示“找不到控件”,请检查窗体上的标签名称是否与代码中拼接的完全一致(Access控件名称不区分大小写,但尽量保持统一);
  • 新增fdaynum = -1的初始化和判断,避免当月第一天星期匹配失败时导致后续逻辑出错。

内容的提问来源于stack exchange,提问作者Michael Michaloudis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 06:03:21