Ms access VBA-为什么我会得到预期函数或变量的编译错误

Ms access VBA-为什么我会得到预期函数或变量的编译错误,ms-access,vba,Ms Access,Vba,我很想知道为什么下面的代码抛出并编译错误,说明它需要一个函数或变量 Dim frm as Form set frm = DoCmd.OpenForm(FormName:=mstr_FORM_NAME, View:=acDesign, WindowMode:=acHidden) 但我能做到 DoCmd.OpenForm FormName:=mstr_FORM_NAME, View:=acDesign, WindowMode:=acHidden set frm=Forms(mstr_FORM_NA

我很想知道为什么下面的代码抛出并编译错误,说明它需要一个函数或变量

Dim frm as Form
set frm = DoCmd.OpenForm(FormName:=mstr_FORM_NAME, View:=acDesign, WindowMode:=acHidden)
但我能做到

DoCmd.OpenForm FormName:=mstr_FORM_NAME, View:=acDesign, WindowMode:=acHidden
set frm=Forms(mstr_FORM_NAME)
我对做有效的事情没有异议,我只是想了解前一句话到底是怎么回事

谢谢,,
Fred

OpenForm方法()没有返回任何内容,只是打开表单(没有返回)

因此,您试图将
Nothing
强制转换为定义为表单的变量

相反,
frm
(使用
Set-frm=
语句)期望“成为某物”,它期望一个函数或变量-一个值,这很清楚)。
OpenForm
方法()没有返回任何内容,只是打开表单(不返回它)

因此,您试图将
Nothing
强制转换为定义为表单的变量

相反,
frm
(使用
Set-frm=
语句)期望“成为某物”,它期望函数或变量-一个值,这是很清楚的)。

DoCmd.OpenForm
是一种不返回值的方法。在第二个代码段中,您正在访问包含该表单的
Forms
集合,该集合已由DoCmd.OpenForm打开。调用方法时,不能指定大括号。

DoCmd.OpenForm
是一种不返回值的方法。在第二个代码段中,您正在访问包含该表单的
Forms
集合,该集合已由DoCmd.OpenForm打开。调用方法时,不能指定大括号。

可能重复的Ken,我在发布之前阅读了引用的帖子,但帖子似乎没有回答我的问题或困惑。可能重复的Ken,我在这里发布之前阅读了参考文章,但这篇文章似乎没有回答我的问题或困惑。这很有道理。我想我只是对方法不返回值的概念理解得不够透彻。谢谢你,彼得,这很有道理。我想我只是对方法不返回值的概念理解得不够透彻。谢谢你,彼得。