【问题标题】:Assigning captions to dynamic form controls buttons based on cell value根据单元格值将标题分配给动态表单控件按钮
【发布时间】:2019-05-08 21:59:10
【问题描述】:

我对 Excel VBA 还是很陌生,所以如果描述模糊,我提前道歉。 我有一个代码,它将“需求概览”工作表中的 W 列插入一定数量的产品名称(“产品 X”、“产品 Y”等......产品数量从 1 动态变化到 100) ,总是从单元格 W2 开始,并且总是在每个产品之间跳过一个单元格(比如产品 X 在 W2 中,产品 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

【问题讨论】:

    标签: excel vba caption


    【解决方案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,找到最后一行并将循环限制在必要的部分而不是所有数百万行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 2012-07-28
      • 2023-03-25
      相关资源
      最近更新 更多