【问题标题】:Excel VBA - Cannot Close New Workbook created using Workbook.AddExcel VBA - 无法关闭使用 Workbook.Add 创建的新工作簿
【发布时间】:2019-05-20 12:38:40
【问题描述】:

我有以下代码创建一个新工作簿并用一些数据填充它。

Dim wb as Workbook
Set wb = Workbooks.Add
wb.Range("A1") = "Dummy Text" 'Some code that populates data
wb.Activate 'wb.Activate or ThisWorkbook.Activate has no effect

新工作簿可以正常打开。我可以将其最小化,使用菜单等,但无法单击关闭按钮。

如果我返回包含宏的原始工作簿并返回新工作簿,我可以关闭。

我该如何克服这个问题?不幸的是,没有想法。

我想要的用例

第 1 步:用户单击一个按钮 -> 一个带有数据的新工作簿打开

第 2 步:用户阅读新工作簿中的信息并决定保存/关闭

但新工作簿中的关闭按钮在用户返回原始工作簿并再次进入新工作簿之前将不起作用。

【问题讨论】:

  • 这不可能是实际代码,因为它不起作用。无论如何,你不应该声明As New Workbook,而应该声明As Workbook
  • 是的,已更正。错字。
  • 那仍然不是真正的代码。修复后,我可以毫无问题地关闭新工作簿。您使用的是哪个版本的 Excel,从哪里运行代码?

标签: vba excel


【解决方案1】:

在你的代码之后

Dim wb as Workbook
Set wb = Workbooks.Add
wb.Range("A1") = "Dummy Text"

插入

set wb = nothing

这将发布您的新工作簿,您可以使用右上角的“X”关闭。

P.S.:对不起我的英语

【讨论】:

    【解决方案2】:
    Sub Button1_Click()
    Dim wb As Workbook
    Set wb = Workbooks.Add
    wb.Sheets("Sheet1").Range("A1") = "Dummy Text" 'Some code that populates data
    wb.Activate 'wb.Activate or ThisWorkbook.Activate has no effect
    End Sub
    

    这在我的 Excel 上运行良好。我点击关闭按钮,它询问我是否要保存。

    【讨论】:

      【解决方案3】:

      我认为你需要添加这一行:

      Workbooks("source").Close
      

      如果你想关闭当前工作簿,试试这个:

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
          If ActiveCell.Value = "CLOSE" Then
              ThisWorkbook.Saved = True
              ThisWorkbook.Close
          End If
      End Sub
      

      【讨论】:

      • 这将关闭源工作簿。我的用例是我希望用户阅读新工作簿上的信息,然后决定关闭它或保存它。但是在我回到原来的工作簿然后再回到新的工作簿之前,右上角的关闭按钮将不起作用。
      【解决方案4】:

      显示用户表单时,请确保使用“.Show 0”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        相关资源
        最近更新 更多