Excel VBA在单元格旁边创建一个按钮
对于我的问题,我想在单元格旁边创建一个不为NULL或“”的按钮。按钮的标题必须跟在旁边单元格中的值后面 例如:Excel VBA在单元格旁边创建一个按钮,vba,excel,Vba,Excel,对于我的问题,我想在单元格旁边创建一个不为NULL或“”的按钮。按钮的标题必须跟在旁边单元格中的值后面 例如: 我在范围(“D3”) 我希望宏在范围(“C3”) 但是,我希望宏是动态的,这样每当我在列“D”中键入值时,左侧的单元格-C3将弹出一个按钮 因此,我发现我需要手动为CommandButton编码,对吗 尽管如此,还是要提前向大家表示感谢。您可以通过添加一个命令按钮来录制宏,查看宏是如何创建的,然后合并这些奇特的部分。请注意OLE命令按钮对象的属性,请注意它们 e、 g.theButto
范围(“D3”)
范围(“C3”)
C3
将弹出一个按钮CommandButton
编码,对吗
尽管如此,还是要提前向大家表示感谢。您可以通过添加一个命令按钮来录制宏,查看宏是如何创建的,然后合并这些奇特的部分。请注意OLE命令按钮对象的属性,请注意它们 e、 g.
theButton.Name
标题的设置通过theButton.Object.caption
等进行
下面是一段代码片段,让您继续学习:-
Option Explicit
Sub createButtons()
Dim theButton As OLEObject
Dim rngRange As Range
Dim i As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set rngRange = Sheets(2).Range("B2")
For i = 0 To 9
If rngRange.Offset(i, 0).Value <> "" Then
With rngRange.Offset(i, 1)
Set theButton = ActiveSheet.OLEObjects.Add _
(ClassType:="Forms.CommandButton.1", _
Left:=.Left, _
Top:=.Top, _
Height:=.Height, _
Width:=.Width)
theButton.Name = "cmd" & rngRange.Offset(i, 0).Value
theButton.Object.Caption = rngRange.Offset(i, 0).Value
'-- you may edit other properties such as word wrap, font etc..
End With
End If
Next i
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
选项显式
子创建按钮()
将按钮调暗为一个对象
暗格兰奇山脉
作为整数的Dim i
Application.ScreenUpdating=False
Application.DisplayAlerts=False
设置rngRange=图纸(2)。范围(“B2”)
对于i=0到9
如果rngRange.Offset(i,0).Value为“”,则
带rngRange.Offset(i,1)
设置按钮=ActiveSheet.OLEObjects.Add_
(类类型:=“Forms.CommandButton.1”_
左:=.左_
Top:=.Top_
高度:=。高度_
宽度:=。宽度)
theButton.Name=“cmd”&rngRange.Offset(i,0).Value
theButton.Object.Caption=rngRange.Offset(i,0).Value
“--您可以编辑其他属性,如换行符、字体等。。
以
如果结束
接下来我
Application.ScreenUpdating=True
Application.DisplayAlerts=True
端接头
输出:
您可以通过添加一个命令按钮来录制宏,查看宏是如何创建的,然后合并这些奇特的部分。请注意OLE命令按钮对象的属性,请注意它们 e、 g.
theButton.Name
标题的设置通过theButton.Object.caption
等进行
下面是一段代码片段,让您继续学习:-
Option Explicit
Sub createButtons()
Dim theButton As OLEObject
Dim rngRange As Range
Dim i As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set rngRange = Sheets(2).Range("B2")
For i = 0 To 9
If rngRange.Offset(i, 0).Value <> "" Then
With rngRange.Offset(i, 1)
Set theButton = ActiveSheet.OLEObjects.Add _
(ClassType:="Forms.CommandButton.1", _
Left:=.Left, _
Top:=.Top, _
Height:=.Height, _
Width:=.Width)
theButton.Name = "cmd" & rngRange.Offset(i, 0).Value
theButton.Object.Caption = rngRange.Offset(i, 0).Value
'-- you may edit other properties such as word wrap, font etc..
End With
End If
Next i
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
选项显式
子创建按钮()
将按钮调暗为一个对象
暗格兰奇山脉
作为整数的Dim i
Application.ScreenUpdating=False
Application.DisplayAlerts=False
设置rngRange=图纸(2)。范围(“B2”)
对于i=0到9
如果rngRange.Offset(i,0).Value为“”,则
带rngRange.Offset(i,1)
设置按钮=ActiveSheet.OLEObjects.Add_
(类类型:=“Forms.CommandButton.1”_
左:=.左_
Top:=.Top_
高度:=。高度_
宽度:=。宽度)
theButton.Name=“cmd”&rngRange.Offset(i,0).Value
theButton.Object.Caption=rngRange.Offset(i,0).Value
“--您可以编辑其他属性,如换行符、字体等。。
以
如果结束
接下来我
Application.ScreenUpdating=True
Application.DisplayAlerts=True
端接头
输出:
试试这个
Public Sub Worksheet_Change(ByVal Target As Range)
Dim col As Integer
Dim row As Integer
col = Target.Column
row = Target.row
If Not IsNull(Target.Value) And Not IsEmpty(Target.Value) Then
Application.EnableEvents = False
Buttons.Add Cells(row, col - 1).Left, Cells(row, col - 1).Top, Cells(row, col - 1).Width, Cells(row, col - 1).Height
Application.EnableEvents = True
End If
End Sub
打开开发人员选项卡-->Visual Basic,双击“Sheet1”,然后将此代码粘贴到其中。通过在Sheet1上的单元格中键入文本,然后离开该单元格(例如按Enter键)进行测试。尝试此操作
Public Sub Worksheet_Change(ByVal Target As Range)
Dim col As Integer
Dim row As Integer
col = Target.Column
row = Target.row
If Not IsNull(Target.Value) And Not IsEmpty(Target.Value) Then
Application.EnableEvents = False
Buttons.Add Cells(row, col - 1).Left, Cells(row, col - 1).Top, Cells(row, col - 1).Width, Cells(row, col - 1).Height
Application.EnableEvents = True
End If
End Sub
打开开发人员选项卡-->Visual Basic,双击“Sheet1”,然后将此代码粘贴到其中。通过在Sheet1上的单元格中键入文本,然后离开该单元格(例如按Enter键)进行测试。首先。。。第二手动执行所需操作时,请参见工作表更改事件和宏记录器。首先,我确实在活动表中添加了按钮,但没有关于“Selection.OnAction=”的任何线索,因为宏是我模块中的一个子模块。您希望该按钮做什么?
Selection.OnAction=
如果您希望单击按钮并执行宏,这似乎与您提出的问题不同。您不需要任何按钮来创建按钮。。。除非我感到困惑。是的,真的很抱歉困惑。我希望工作表_change()在特定条件下为我创建CommandButton。首先。。。第二手动执行所需操作时,请参见工作表更改事件和宏记录器。首先,我确实在活动表中添加了按钮,但没有关于“Selection.OnAction=”的任何线索,因为宏是我模块中的一个子模块。您希望该按钮做什么?Selection.OnAction=
如果您希望单击按钮并执行宏,这似乎与您提出的问题不同。您不需要任何按钮来创建按钮。。。除非我感到困惑。是的,真的很抱歉困惑。我想让工作表_change()在一定条件下为我创建CommandButton。@谭良哲,请试一试。想象一下你想如何添加图片/图像,重命名它,然后将其放置在单元格中:)谢谢@bonCodigo我现在正在尝试参考你的代码,我将每个“工作表(2)”设置为“活动工作表”。有一个奇怪的问题,它成功地创建了CommandButton,但同时弹出“运行时错误'438'”对象不支持此属性或方法。知道消息是怎么存在的吗?@tansinogzhe我应该更新这个代码。错误是由于按钮.Object.Name应该在哪里出现的按钮.Name:)立即检查:)请评论。请再次检查您的代码。按钮的坐标已关闭。非常感谢。“我现在也在做呢。”谭良哲请你试试。想象一下,你想如何添加图片/图像,重命名它,然后将其放置在单元格中:)谢谢@bonCodigo我正在尝试nowRef