我对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
答案 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,不会找到最后一行并将您的循环限制在必要的范围内,而不是全部百万行。