3

我想从另一种形式创建一种形式。但是 Form 类没有 Show 方法,该方法在http://msdn.microsoft.com/en-us/library/office/gg251540.aspx中描述

这是 Form_Main 中的代码:

Private Sub btnTemp_Click()
    Dim frmOpt As Form_Option
    Set frmOpt = New Form_Option
    frmOpt.Show vbModal
End Sub

但我收到“编译错误:找不到方法或数据成员”。

我在哪里犯错了?

谢谢

(VBA 6.5 版;Access 2007)

=====
对不起我之前的评论:现在我看到评论并不明显。

我的 mainForm 上没有 subForm。

我有两个简单的表单:Form_Main 和 Form_Option。我想成为下一个逻辑:

  1. Form_Main 有按钮“btnOption”
  2. 点击“btn选项”。Form_Option 正在打开
  3. 我更改 Form_Option 上的选项
  4. 并点击Form_Option上的btnSave按钮,下一个思路正在执行:
    Form_Main.TimerInterval = CLng(Form_Option.edtTimerInterval.Value)


此刻我把它简单化了。这对我来说已经足够了。
我这样写:

Private Sub btnOptions_Click()
    '  After changing options, refresh timer interval of main form
    DoCmd.OpenForm "Options", , , , , acDialog
    Me.TimerInterval = 1000 * CLng(MOptions.loadOption("fPeriodVerifyNoticeInterval"))
End Sub

其中 fPeriodVerifyNoticeInterval 是存储在选项表中的参数。
并且选项表单在保存时更改“fPeriodVerifyNoticeInterval”参数。

我的问题解决了,谢谢

4

1 回答 1

1

“错误”是这Show不是访问表单的有效方法。您提供的链接适用于用户表单,它们是用 VBA 制作的表单。

如果你想以这种方式创建一个新表单,你想要的是这样的:

frmOpt.Modal = true
frmOpt.Visible = true

虽然我建议改为这样做: DoCmd.OpenForm "Option", , , , , acDialog这会将选项表单作为对话框打开。

警告:如果您使用 New 创建表单,即使您将其设置为模式,它也不会停止 VBA 代码的进度。这意味着您的变量将在代码完成后立即超出范围。如果您希望您的表单保持打开状态,您需要在子内将其设置为静态或在子外声明它,如下所示:

static frmOpt As Form_Option

或在子之外private frmOpt = Form_Optionpublic frmOpt = Form_Option

于 2012-10-25T00:20:40.620 回答