我创建了一个excel宏,它采用了一个格式可怕的表,并且大部分都将所有数据放在正确的位置。因此,不需要手动重新输入数据需要8个多小时,而只需要约30分钟检查并确保一切正确。
在宏的最后,我创建了一个按钮,允许进行最终格式化,将工作簿设置为逗号分隔文件,以便将其导入数据库。
'The 4 arguments determine where the cells top left corner is and its width,height
Set btn = ActiveSheet.Buttons.Add( _
ActiveSheet.Columns(7).Left, _
ActiveSheet.Rows(2).Top, _
ActiveSheet.Columns(1).Width * 2, _
ActiveSheet.Rows(1).Height * 2).Select
'creates all the settings for the button
Selection.Name = "btnFormat"
Selection.OnAction = "Final_Formatting"
ActiveSheet.Shapes("New Button").Select
Selection.Characters.Text = "Complete Formatting"
问题是,最后按钮仍处于选中状态,我想取消选择它。我在其他地方搜索过,大多数人都说只是选择其他东西,但我只是想取消选择按钮,没有别的。这可能吗?
此外,如果有人有关于如何清理4个参数的建议,请随时发表评论。我从互联网上获得了这一部分并根据我自己的目的进行了调整,但看起来很荒谬。
提前致谢。
答案 0 :(得分:0)
如果您不想选择按钮,请不要选择它(就像您当前所做的那样)。我建议对以下代码进行一些改进:
Sub TEST()
Dim btn As Button
Set btn = ActiveSheet.Buttons.Add( _
ActiveSheet.Columns(7).Left, _
ActiveSheet.Rows(2).Top, _
ActiveSheet.Columns(1).Width * 2, _
ActiveSheet.Rows(1).Height * 2)
'there is no selection method above!
'creates all the settings for the button
With btn
.Name = "btnFormat"
.OnAction = "Final_Formatting"
'ActiveSheet.Shapes("btnFormat").Select- this line is not needed
.Characters.Text = "Complete Formatting"
End With
End Sub
因此,代码运行后将选择单元格范围。
答案 1 :(得分:0)
只要总是有一个选定的元素,我认为“取消选择”选项不存在(因为可能会引发没有选择元素的情况)。通常的程序只是选择其他东西。在这种情况下,我猜选择任何单元格都适合你:
Range("A1").Select
关于按钮的创建,首先,这段代码是错误的(实际上是在我的计算机上触发错误)。如果您想使用Select
,则必须删除Set btn =
部分。除此之外,您必须传递这些参数,但可以删除ActiveSheet部分,只要它是隐式的(建议依赖于工作表的实际名称;但如果情况“受控制”,您可以依赖ActiveSheet )。
Set btn = ActiveSheet.Buttons.Add(Columns(7).Left, Rows(2).Top, Columns(1).Width * 2, Rows(1).Height * 2)
ActiveSheet.Buttons.Add(Columns(7).Left, Rows(2).Top, Columns(1).Width * 2, Rows(1).Height * 2).Select