编辑:问题已经解决。请在下面的单独帖子中查看我的回答!
我有两种形式:Calendar和frmMagnet。单击日历中的文本框时,它会打开frmMagnet并且应该调用frmMagnet中声明的函数。但是当我点击文本框时,我收到错误13。
Global Vars
Private CalendarArray(42, 2) As Variant
CalenderArray初始化
Private Sub InitVariables()
intMonthSelect = Month(CDate(CStr(Me.MonthComboBox) & " 1"))
intYearSelect = Me.YearComboBox
lngDate = CLng(DateSerial(intYearSelect, intMonthSelect, 1))
strUnscheduledJobs = ""
'Initialize CalendarArray
Dim i As Integer
For i = 0 To UBound(CalendarArray) - 1
CalendarArray(i, 0) = lngDate - Weekday(lngDate) + 1 + i
CalendarArray(i, 1) = CStr(Day(CalendarArray(i, 0)))
Next i
End Sub
打开磁铁表格的日历方法
Private Sub text1_DblClick(Cancel As Integer)
If Len(Me.ActiveControl.Text) > 2 Then
Call OpenTextBox(Me.ActiveControl.Name)
End If
End Sub
Private Sub OpenTextBox(ctlName As String)
Dim ctlValue As Integer
Dim DayOfMonth As Long
ctlValue = Me.Controls(ctlName).Tag
DayOfMonth = CalendarArray(ctlValue - 1, 0)
DoCmd.OpenForm "frmMagnet"
Call Forms("frmMagnet").PopulateHeaderText(DayOfMonth) 'THE ERROR IS ON THIS LINE!!!!!
End Sub
frmMagnet方法
Public Sub PopulateHeaderText(theDate As Long)
Me.Controls(HeaderText) = CStr(theDate)
End Sub
谢谢!
答案 0 :(得分:1)
在打开磁铁表格的方法上,你有这行代码;
ctlValue = Me.Controls(ctlName).Tag
ctlValue为Long,是否所有字段都正确标记,没有任何字符串字符(并且没有空值)?
我的建议是,在程序开始时设置一个断点(进入VBA并点击左边的栏中得到一个红点)。然后按下按钮运行程序,并逐步完成,直到找到有问题的行(使用F8逐步进行)。
最后,值得明确选项并正确声明所有变量,这在这种情况下也会有很大帮助。
答案 1 :(得分:1)
所以我的问题是
Me.Controls(HeaderText) = CStr(theDate)
HeaderText周围需要引用。正确的语法是
Me.Controls("HeaderText") = CStr(theDate)