【问题标题】:Add VBA code to MS Access userform using VBA使用 VBA 将 VBA 代码添加到 MS Access 用户窗体
【发布时间】:2017-11-17 15:38:27
【问题描述】:

我有一个自动生成表单的脚本。此表格只是临时的,可以在关闭后删除。为了避免手动操作,我想添加一个按钮或 form_close() 方法,其中应该有一些代码来删除表单(如果可能的话)。

否则,我希望能够防止弹出窗口迫使我保存表单并在我关闭它后为其命名(如下所示为荷兰语)。

我无法禁用此弹出窗口,或使用 VBA 代码添加 VBA 代码。谁能告诉我这是否可能并举个例子?

【问题讨论】:

  • 为什么不使用简单的 InputBox() 函数?

标签: vba ms-access ms-access-2007


【解决方案1】:

据我所知,您不能在不保存它们的情况下将模块添加到表单中,并且表单需要在设计视图中才能将模块添加到其中(就像通过 GUI 添加它们时一样)。

从你的起点开始(你有一个打开的未保存的表格):

Public Sub AddModuleToOpenUnsavedForm(strModuleText As String)
    'Save the form name to a variable
    Dim strFormName As String
    strFormName = Screen.ActiveForm.Name
    'Save and close the form
    DoCmd.Save acForm, strFormName
    DoCmd.Close acForm, strFormName, acSaveYes
    'Open the form back up in desing view
    DoCmd.OpenForm strFormName, acDesign
    'Add a module to it
    Forms(strFormName).HasModule = True
    'Add code to the module
    Forms(strFormName).module.InsertText strModuleText
    'Close it again
    DoCmd.Save acForm, strFormName
    DoCmd.Close acForm, strFormName, acSaveYes
    'Open the form back up again
    DoCmd.OpenForm strFormName, acNormal
End Sub

请注意,这确实会提示数据库范围的保存。如果您有任何未保存的打开对象,系统会提示您保存它们。

显然,您可以在使用表单后将其删除,但您必须主动删除,而不是不保存。

【讨论】:

  • 感谢您的回复。问题是,我不想保存表单并让用户手动删除它。用户无法访问导航窗格。安德烈提供的答案虽然有效。
  • 注意,我的回答主要是有用的,因为它回答了你的问题,搜索的人可以使用它。您可以根据需要添加关闭时 -> 删除表单,但如果您不想实际使用关闭按钮或任何其他 VBA,Andre 的解决方案会更简单。
【解决方案2】:

您不需要表单中的 VBA 代码来执行此操作,只需从按钮的 OnClick 事件中调用公共函数即可。

' This is called from the "Close" button on the temp form
Public Function CloseWithoutSave(fName As String)
    DoCmd.Close acForm, fName, acSaveNo
End Function

' Demo
Public Sub CreateTestForm()

    Dim F As Form
    Dim btn As CommandButton

    Set F = Application.CreateForm()
    F.Caption = "This is a test form!"

    Set btn = CreateControl(F.Name, acCommandButton, Left:=100, Top:=100)
    btn.Caption = "Close me"
    btn.OnClick = "=CloseWithoutSave(""" & F.Name & """)"

    ' Open test form in form view
    DoCmd.Restore
    DoCmd.OpenForm F.Name, acNormal

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    相关资源
    最近更新 更多