Main.xlsm
Sheet1
和Sheet2
Sheet1
有一个名为cmd_btn
Sheet2
目前为xlVeryHidden
在Module1
我有以下代码:
Sub Macro1()
With Workbooks("Main.xlsm").Sheets("Sheet2")
.Visible = True
.Copy
.Visible = xlVeryHidden
End With
End Sub
此代码使Sheet2
可见,将其复制为新工作簿(弹出新工作簿),然后再次xlVeryHidden
。此时,Main.xlsm落后,新创建的工作簿就在前面。
直接运行Macro1
时:
当我从Macro1
运行cmd_btn
时:
问题:这可能是什么原因?
PS:如果您在尝试上述操作时没有发生这种情况,请尝试以下操作,您将遇到同样的事情:
Sheet1
cmb_list
上创建一个组合框
cmb_list
Sheet3
的工作表,并将其设为xlVeryHidden
cmb_list
中的任意值,然后从cmd_btn
Sub Macro3()
With Workbooks("Main.xlsm")
If cmb_list.Value = "Copy Sheet2" Then
.Sheets("Sheet2").Visible = True
.Sheets("Sheet2").Copy
.Sheets("Sheet2").Visible = xlVeryHidden
ElseIf cmb_list.Value = "Copy Sheet3" Then
.Sheets("Sheet3").Visible = True
.Sheets("Sheet3").Copy
.Sheets("Sheet3").Visible = xlVeryHidden
End If
End With
End Sub
答案 0 :(得分:0)
我尝试了您提供的所有步骤,并且无法复制您的代码问题,因为是 (你在Workbook_BeforeClose()事件中有其他代码吗?)
我对代码进行了优化,但仍然有效:
Sheet1 VBA模块:
Option Explicit
Private Sub cmd_btn_Click()
Application.ScreenUpdating = False
CopyWorkSheet Right(cmb_list.Value, 1)
Application.ScreenUpdating = True
End Sub
ThisWorkbook VBA模块:
Option Explicit
Private Sub Workbook_Open()
populateCmb
End Sub
<强>模块1 强>:
Option Explicit
Public Sub populateCmb()
With Workbooks("Main.xlsm").Sheets("Sheet1").cmb_list
.AddItem "Copy Sheet2"
.AddItem "Copy Sheet3"
End With
End Sub
Public Sub CopyWorkSheet(ByVal wsID As Long)
With Workbooks("Main.xlsm")
With .Sheets("Sheet" & wsID)
.Visible = True
.Copy
.Visible = xlVeryHidden
End With
.Close False 'Closes Main.xlsm, without saving it
End With
End Sub