【发布时间】:2015-11-09 23:15:27
【问题描述】:
当我单击用户窗体上的按钮时,它会转到相关工作表(通过 .activate,然后是 End Sub,但我也尝试过 .select),但我无法编辑单元格。但是,当我通过底部窗格正常单击工作表时,我可以再次对其进行编辑。
我还没有找到一个 Excel 日志或进程管理器,所以我看不到哪些宏正在运行或正在加载的数据* 并且可能会影响这一点 - 有人知道我无法找到的可能原因吗使用用户窗体后编辑单元格值?
这是我有问题的按钮的代码(我添加了 Unload Me 部分,希望它能阻止任何额外的 UserForm subs 剩余:
Private Sub CommandButton1_Click()
Sheets("2H Campaigns View").Select
Unload Me
End Sub
*我们的工作表使用了相当多的外部数据,但如果是这种情况,我认为单击底部窗格进行编辑也不起作用...
我还尝试在单击“卸载我”后立即关闭用户窗体(以及可能运行的宏),但无济于事。
编辑:我在每个子程序的末尾放置了一个打印到单元格功能(在单独的调试表上),以检查单击按钮后是否还有其他人在运行,但它读取按钮 (上面的 sub) 是最后一个运行的 sub。因此可以安全地假设该问题与以下潜艇无关;隔离到按钮子或按钮子的运行对工作簿的设置所做的事情....
此工作表中使用的其他子项(都在 UserForm - cbSector_Change 和 UserForm_initialize 为两个用于分类页面的菜单中绘制工作表名称;一个是另一个的子菜单):
Private Sub cbSector_Change()
If cbSector.Value = "DIST" Then
With cbCampaign
.RowSource = Worksheets("Master Data").Range("G13").Value
.ListRows = Worksheets("Master Data").Range("H14").Value
.Value = Worksheets("Master Data").Range("b16").Value
End With
ElseIf cbSector.Value = "INDU" Then
With cbCampaign
.RowSource = Worksheets("Master Data").Range("gl7").Value
.ListRows = Worksheets("Master Data").Range("h17").Value
.Value = Worksheets("Master Data").Range("b16").Value
End With
ElseIf cbSector.Value = "CS" Then
With cbCampaign
.RowSource = Worksheets("Master Data").Range("gl8").Value
.ListRows = Worksheets("Master Data").Range("h18").Value
.Value = Worksheets("Master Data").Range("b16").Value
End With
End If
End Sub
Private Sub EButton_Click()
ThisWorkbook.Saved = True
ThisWorkbook.Close
End Sub
Private Sub SEButton_Click()
ThisWorkbook.Save
ThisWorkbook.Saved = True
ThisWorkbook.Close
End Sub
Private Sub UserForm_Initialize()
With cbSector
.RowSource = Worksheets("Master Data").Range("b13").Value
.ListRows = Worksheets("Master Data").Range("b14").Value
.Value = Worksheets("Master Data").Range("b12").Value
End With
End Sub
Private Sub cbSelect_Click()
If cbSector.Value = "(none)" Then
errormsg = "Please Select Sector"
ElseIf cbCampaign.Value = "(none)" Then
errormsg = "Please Select Campaign"
Else: errormsg = "nothing"
End If
If errormsg = "nothing" Then
Sheets(cbSector.Value & "_" & cbCampaign.Value).Select
Unload Me
Else: MsgBox (errormsg)
End If
End Sub
要启动用户窗体,此代码附加到工作簿中除一张工作表之外的所有工作表上的按钮:
Public SheetSelected As Worksheet
Public errormsg As String
Sub CallUserForm()
nav.Show
End Sub
【问题讨论】:
-
宏运行后可以选择单元格吗??
-
是的,但是当我在编辑后点击返回时,它会恢复为原始值。同样,您不能在输入新值后单击顶部/公式栏中的勾号。
-
为什么我的问题被否决了?我是新来的,所以一些解释会很好。在询问无济于事之前,我进行了彻底的搜索。
-
@DesConlon 我没有对您投反对票,但发现有人会投反对票是可以理解的。您实际上是在要求我们调试我们看不到的代码。我们可以尝试猜测——但何必呢?也许如果您向我们展示相关按钮的代码,它会有所帮助。
-
已编辑。我很抱歉约翰,但实际上是三行;如果我认为它相关,我最初会包含它。