如何在VBA中以编程方式在某个表单元格数据旁边添加button?
我有一个函数可以产生100个单元行(和2列)的数据。 对于每一行(在第三列),我需要添加一个button,点击后会popup一个自定义模式对话框,给用户4个选项/button供您select。
任何想法如何做到这一点?
/ T
我认为这足以让你走上一条美好的道路:
Sub a() Dim btn As Button Application.ScreenUpdating = False ActiveSheet.Buttons.Delete Dim t As Range For i = 2 To 6 Step 2 Set t = ActiveSheet.Range(Cells(i, 3), Cells(i, 3)) Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height) With btn .OnAction = "btnS" .Caption = "Btn " & i .Name = "Btn" & i End With Next i Application.ScreenUpdating = True End Sub Sub btnS() MsgBox Application.Caller End Sub
它创buildbutton并将它们绑定到butnS()。 在btnS()中,你应该显示你的对话框等
假设你的函数在列A和列B中input数据,并且你想要一个自定义的用户窗体,如果用户select列C中的一个单元格。一种方法是使用SelectionChange
事件:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim clickRng As Range Dim lastRow As Long lastRow = Range("A1").End(xlDown).Row Set clickRng = Range("C1:C" & lastRow) //Dynamically set cells that can be clicked based on data in column A If Not Intersect(Target, clickRng) Is Nothing Then MyUserForm.Show //Launch custom userform End If End Sub
请注意,当用户select C列中的任何单元格时,用户窗体将出现,并且您可能想要填充C列中的每个单元格,例如“select要启动窗体的单元格”,以使用户需要执行操作一个button自然表明它应该被点击)