MS Access VBA:获取错误';13';:从其他窗体调用函数时类型不匹配
编辑:问题已经解决了。请在下面的单独帖子中查看我的答案 我有两种表格:日历和日历。单击日历中的文本框时,它将打开frmMagnet,并应调用frmMagnet中声明的函数。但是当我点击文本框时,我得到了错误13 全局变量MS Access VBA:获取错误';13';:从其他窗体调用函数时类型不匹配,vba,ms-access-2013,type-mismatch,Vba,Ms Access 2013,Type Mismatch,编辑:问题已经解决了。请在下面的单独帖子中查看我的答案 我有两种表格:日历和日历。单击日历中的文本框时,它将打开frmMagnet,并应调用frmMagnet中声明的函数。但是当我点击文本框时,我得到了错误13 全局变量 Private CalendarArray(42, 2) As Variant 压延机阵列初始化 Private Sub InitVariables() intMonthSelect = Month(CDate(CStr(Me.MonthComboBox) & "
Private CalendarArray(42, 2) As Variant
压延机阵列初始化
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
谢谢大家! 在打开磁铁窗体的方法中,您有这行代码
ctlValue = Me.Controls(ctlName).Tag
ctlValue很长,是否所有字段都正确标记,没有任何字符串(也没有空值)
我的建议是在程序开始时设置一个断点(进入VBA并单击左侧的栏以获得一个红点)。然后按下按钮运行该过程,并一步一步地进行,直到找到不符合要求的行(使用F8一步一步地进行)
最后,打开option explicit并正确声明所有变量是值得的,它在这种情况下也有很大帮助。所以我的问题是
Me.Controls(HeaderText) = CStr(theDate)
需要在HeaderText周围引用。正确的语法是
Me.Controls("HeaderText") = CStr(theDate)
请包括
CalenderArray
方法实现。刚刚添加到帖子中。谢谢。您的VBA似乎都不是从窗体生成的事件。我没有看到textbox\u单击
或Form\u打开
子例程,我在上面的代码中没有看到函数。考虑在FMOMMONE ONOPEN事件中调用<代码> PopulateHeaderText <代码>子程序。我用一个双击函数更新代码(它们都遵循相同的格式)。我没有基于OnOpen事件调用PopulateHeaderText,因为我需要传入日期。谢谢。你知道如何调试vba吗?如果是,哪一行导致错误这一行是违规者:呼叫表单(“frmMagnet”)。PopulateHeaderText(DayOfMonth)。在我的模块的顶部,或者无论它叫什么,我都有显式的选项。我只包含了我认为相关的部分代码,因为我不想成为那种把整件事都扔给你然后说“弄明白”的人。但是,如果你或其他人认为拥有这一切会有所帮助,我可以发布。呵呵,我明白了,把精选的部分放在顶部,剩下的部分放在下面作为参考也许是一个好主意——这将帮助我更快地查看并弄清楚,我想!很高兴你把它整理好了!!