根据单元格值将标题分配给动态表单控件按钮

时间:2019-05-08 11:03:02

标签: excel vba caption

我对Excel VBA来说还很陌生,所以如果对某些内容有所含糊,我表示歉意。 我有一个代码,该代码在“需求概述”工作表上的W列中插入了一定数量的产品名称(“ Product X”,“ Product Y”等...产品数量从1变为100) ,始终在W2单元格中开始,并且总是在每个产品之间跳过一个单元格(例如Product X在W2中,Product Y在W4中,等等) 我想在VBA中编写代码,是为每个产品名称创建一个表单控件按钮,并将其标题更改为W列中的产品名称。 我可以编写代码来动态创建与W列中的产品名称一样多的表单控件按钮,但是,由于我总是遇到错误,我一直在努力为它们分配标题:“无法获得商品的Buttons属性工作表类”

分配逻辑是,按钮1的产品名称位于W2,按钮2的产品名称位于W4等。

任何帮助将不胜感激! 提前致谢!

Sub AddInfo()


Dim butn As Button
Dim rng As Range
Dim trial As Range
Dim i As Integer

Sheets("Demand Overview").Select
Set rng = ActiveSheet.Range("S:S")
For Each trial In ActiveSheet.Range("W:W")

 If trial.Value <> "" Then Set butn = ActiveSheet.Buttons.Add(rng.Left, 
 trial.Top, 150, 26)

Next trial

'the code works until this point

With ActiveSheet
For i = 1 To 100
.Buttons("Button" & i).Caption = Range("W" & 2 * i)
 Next i
 End With

 End Sub

1 个答案:

答案 0 :(得分:1)

尝试一下。认为在创建按钮时引用按钮更有意义,这样您就知道引用了正确的按钮。

Sub AddInfo()

Dim butn As Button
Dim rng As Range
Dim trial As Range
Dim i As Long

With Sheets("Demand Overview")
    Set rng = .Range("S:S")
    For Each trial In .Range("W:W")
        If trial.Value <> "" Then
            Set butn = .Buttons.Add(rng.Left, trial.Top, 150, 26)
            i = i + 1
            butn.Caption = .Range("W" & 2 * i).Value
        End If
    Next trial
End With

End Sub

顺便说一句,我不会遍历整个W,不会找到最后一行并将您的循环限制在必要的范围内,而不是全部百万行。