【发布时间】:2015-01-14 21:27:58
【问题描述】:
我有一个带有几个按钮的对话框,它们可以启动宏来激活并更改为不同的工作表。
我遇到的问题是在我单击按钮后,宏激活了新工作表并且我看到了它。但是当我去删除数据,添加数据或尝试删除一行“什么都没有发生”时,屏幕上的数据仍然存在。如果我回到上一张工作表,我打算删除的单元格和行在该工作表中被删除。这是非常奇怪的,从来没有见过这样的东西。看来,我的宏代码足以说明实际更改为新工作表。如果我单击不同的工作表选项卡来更改它,我没有这个问题。或者,如果我单击对话框按钮转到新工作表并快速执行 ctrl-pgDown 和 Ctrl-PgUp 以从另一个选项卡更改并返回,这似乎可以解决问题。
这是我用来尝试切换到所需选项卡的宏中的代码。
Private Sub Report1Button_Click()
On Error GoTo Handler
Sheets("Report1").Activate
If StayOpenBox.Value = False Then
Unload MainMenu
End If
Exit Sub
Handler:
MsgBox "Sheet 'Report1' not found or renamed"
End Sub
感谢您的帮助或建议
更新:
这是我用来调用对话框的代码。我在另一张纸上有一个形状,该形状分配给此宏以打开对话框
Sub ShowMainMenu()
With UserForm1
.Show
End With
End Sub
此外,没有进一步的代码可以对新工作表进行编辑。我的按钮单击只是切换到另一张纸,当我尝试手动进行编辑时,它们实际上是在上一张纸上完成的,这不是我目前正在查看的。因此,我所做的任何事情,粗体文本、删除文本、删除行等,都没有在我正在查看的当前工作表上完成,但是当我返回上一个工作表时,那里所做的更改。我在 Excel 2013 上,我已经在 2 个单独的文件中重现了这个问题,但我会在不同的计算机和旧版本的 excel 上尝试。我的情况截图如下。
更新 2: 我在带有 Xls 2007 的第二台计算机上运行了这个 xlsm 文件,但没有遇到问题。所以我在第三台也有 Excel 2013 的计算机上运行了宏,它遇到了同样的问题。所以它不是特定于计算机的,似乎是 XLS 2013 中的问题,但不是 XLS 2007 中的问题。我会尝试找到一台带有 Excel 2010 的计算机进行测试,但是关于此代码的某些内容在 2013 年导致了问题,但在旧版本的 excel。
【问题讨论】:
-
以下两个答案都有意义,都没有解决我的问题。 VBA 代码确实正确激活了正确的工作表并对该工作表进行了 excel 更改。但是当我尝试编辑时,它会继续编辑上一张表。我发现如果我直接运行宏或将宏分配给形状,Excel 将激活正确的工作表,我不会有编辑问题。但是我已将宏分配给命令 button_click,出于某种原因,这似乎是问题的一部分。
-
必须有更多代码才能触发 UserForm MainMenu。 Report1Button_Click 在 MainMenu 上不是吗?您是否还可以发布对 Report1 进行更改的代码,因为所有发布的代码都会激活它,然后可能是 Unload MainMenu?
-
@user1825774 是的,我们需要将您的代码视为对原始帖子的编辑。
-
我创建了一个功能区自定义,它运行用于工作表激活的宏代码,之后编辑新工作表没有问题。当对话框中的按钮激活工作表时存在问题,并且仅在 Excel 2013 中,Excel 2007 没有问题。
标签: vba excel excel-2013