首页 > 解决方案 > 如何让 VBA 在另一个工作簿中的用户窗体上选择一个按钮?

问题描述

因此,我正在使用主工作簿中的 VBA 创建数千个工作簿。我有一个 Vba 粘贴到的模板。此模板工作簿具有 VBA

BeforeSave

用户必须填写用户表单以记录用户决定在该会话期间进行的更改的功能。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim ws As Worksheet
Set ws = Sheets("EDITS")
Dim tbl As ListObject
Set tbl = ws.ListObjects("Table1")
Dim newrow As ListRow
Set newrow = tbl.ListRows.Add

SavePrompt.Show

With newrow
    .Range(1) = Now
    .Range(2) = SavePrompt.TextBox1.Text
End With

End Sub

我现在的问题是我运行的 VBA 在主工作簿中。(只是为了清楚)它打开模板,从主工作簿复制第 5 行并粘贴到模板工作簿第 2 页上的第 4 行,然后保存..

wkbDest.SaveAs Filename:=Path & FileName2 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled

这是问题,因为 BeforeSave VBA 运行,打开一个用户窗体。我怎样才能让这个主 VBA 在现在打开并暂停宏的用户窗体上选择 CommandButton1?

然后关闭..

wkbDest.Close

标签: excelvbauserformcommandbuttonbefore-save

解决方案


根据我的评论,我建议在保存之前禁用事件

Application.EnableEvents = False
wkbDest.SaveAs Filename:=Path & FileName2 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
Application.EnableEvents = True

并且由 BeforeSave 事件触发的代码将不会运行。


推荐阅读