【问题标题】:VBA - The Form Class has no the show methodVBA - 表单类没有显示方法
【发布时间】:2012-10-24 21:01:21
【问题描述】:

我想从另一个表单创建一个表单。但是 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. 点击“btnOption”。 Form_Option 正在打开
  3. 我更改了 Form_Option 上的选项
  4. 并点击Form_Option上的btnSave按钮,下一个idea正在执行:
    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”参数。

我的问题解决了,谢谢

【问题讨论】:

    标签: vba


    【解决方案1】:

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

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

    frmOpt.Modal = true
    frmOpt.Visible = true
    

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

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

    static frmOpt As Form_Option
    

    或子外private frmOpt = Form_Optionpublic frmOpt = Form_Option

    【讨论】:

    • 我忘了说我的第一个原因是我想从子表单更改父表单的属性。因为我决定从代码创建子表单,但是还有其他方法吗?
    • 所以... Form_Option 是一个子窗体?更改父表单的属性是什么意思?如果表单是真正的子表单,最合理的方法(在我看来)是在您的父表单上已经有一个子表单,并且在您需要它之前让它不可见。
    • 我编辑帖子。我写下我的意思,我认为我的问题已经解决了。
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    相关资源
    最近更新 更多