取消选择宏内的按钮

时间:2013-06-19 14:03:18

标签: vba excel-vba excel

我创建了一个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个参数的建议,请随时发表评论。我从互联网上获得了这一部分并根据我自己的目的进行了调整,但看起来很荒谬。

提前致谢。

2 个答案:

答案 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
相关问题