我有一个带有几个按钮的对话框,可以启动宏来激活和更改为不同的工作表。
我遇到的问题是在我点击按钮后,宏会激活新工作表并且我看到它。但是当我去删除数据,添加数据或尝试删除一行“没有任何反应”时,屏幕上的数据仍然存在。如果我回到上一张表格,我打算删除的单元格和行将在该表格中删除。它非常奇怪,从未见过这样的东西。看来我的宏代码是做足以实际更改为新工作表的注释。如果我单击其他工作表标签以更改它,我没有这个问题。或者,如果我单击对话框按钮转到新工作表并快速执行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。
答案 0 :(得分:1)
当您运行VBA
代码时,如果您没有定义工作表,则默认使用ActiveSheet
。如果要在特定工作表上执行对象/方法,则应始终指定!您可以采取以下两种方式之一:
Sheets("Report1").[Object].[Method]
'or
Sheets("Report1").[Method]
或者您可以将Sheet名称传递给变量并将其用于更短的代码
Dim Report1 As Worksheet
Set Report1 = Sheets("Report1")
Report1.[Object].[Method]
'or
Report1.[Method]
答案 1 :(得分:0)
尝试更改代码中的行序列。我有类似的情况,事实证明我在将数据从sheet1复制到sheet2的命令之间插入了“删除工作表”代码。当我完成复制表单后删除行(命令)时,一切都开始正常工作。许多命令在执行时激活一张纸,这会立即停用另一张纸。因此,如果你在某处使用“ActiveSheet”sommand,它可能被错误地理解 - 命令可能不会在你想要的工作表上执行。
答案 2 :(得分:0)
只需使用您尝试操作的范围的完整地址,例如,而不是:
Sheets("mySheet").Activate
Range("A1:B10").Cut
Sheets("myOtherSheet").Activate
Range("A1:B10").Paste
使用:
Sheets("mySheet").Range("A1:A10").Cut Destination:=Sheets("myOtherSheet").Range("A1:B10")
答案 3 :(得分:0)
我也遇到了同样的问题,也是Excel 2013.所以即使该帖子超过9个月无效,我想分享我的解决方案以防有人通过谷歌搜索到达这里。
解决方案非常简单。使用以下命令调用userform:
$http.get($rootScope.baseurl + 'api/hotels/', {
params: {
page_size: $scope.page_size,
page: $scope.page,
goingTo: goingTo,
ordering: $scope.sortBy,
price__lte: $scope.max_price_filter,
price__gte: $scope.min_price_filter,
star: $scope.filter.star,
discount: 0
}