我已经找到了答案,却找不到。我有以下代码来动态命名一个按钮:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("E5")) Is Nothing Then _
Me.Buttons(1).Caption = Range("E5").Value
End Sub
其中“E5”与“D5”相关联,“D5”又与“A5”相关联 - 即当“A5”通过“D5”改变时“E5”更新。
如何更改此代码,以便在用户更改A5时子程序运行?我最终会在这个页面上有多个需要动态名称的按钮,所以最好的改变是在工作表上进行任何更改时运行所有私人潜艇的那个...如果可能的话!
非常感谢所有帮助 - 非常感谢!
DDT
答案 0 :(得分:0)
你应该使用
Private Sub Worksheet_Change(ByVal Target As Range)
' if the cell being changed is A5
If Target.Address = Me.Range("$A$5").Address Then
' if E5 is not blank
If Me.Range("$E$5").Value2 <> vbNullString Then
' change the buttons Name
Me.Buttons(1).Name = Me.Range("$E$5").Value2
End If
End If
End Sub
您的If Not Intersect(Target, Range("E5")) Is Nothing Then
正在获得更改范围与Range("E5")
的交集。由于Range("A5")
永远不会与Range("E5")
相交,因此您的代码将始终返回Nothing
,因此始终会失败。
请注意,这会更改按钮 name ,但不会更改按钮上显示的文本。如果您希望按钮显示不同的文本,您只需选择按钮,然后在公式栏中将其公式设置为=$E$5
。