【问题标题】:Customize ActiveX button from VBA从 VBA 自定义 ActiveX 按钮
【发布时间】:2017-04-21 12:05:04
【问题描述】:

我编写了一段代码,当您单击一个按钮时,它会复制一张工作表,将其剥离以进行格式化,然后添加一个分配有不同宏的新按钮。

我的问题是我的两个按钮都是灰色的,我想自定义它们。

第一个按钮是 Excel 控件元素,并且始终存在于原始工作表上。我已经更改了字体、字体大小、下划线并使其变为粗体,方法是右键单击它并进入格式菜单,但我找不到更改其背景颜色的选项。

第二个按钮是通过 VBA 创建的,是一个 ActiveX 按钮。添加的代码如下

Sub TilføjKnap()
Dim Plads As Range
Dim Knap As OLEObject
Dim Kode As String

    Sheets("Indleveringsplan (2)").Activate
        Set Plads = ActiveSheet.Range("L7:N17")

        Set Knap = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False)

        With Knap
            .Name = "EksportKnap"
            .Object.Caption = "Eksporter til PDF"
            .Left = Plads.Left + 10
            .Top = Plads.Top
            .Width = Plads.Width - 10
            .Height = Plads.Height
            .PrintObject = False
        End With

        Kode = "Private Sub EksportKnap_Click()" & vbNewLine
        Kode = Kode & "Call Eksporter" & vbNewLine
        Kode = Kode & "End Sub"

        With ActiveWorkbook.VBProject.VBComponents(Worksheets("Indleveringsplan (2)").CodeName).CodeModule
            .InsertLines .CountOfLines + 1, Kode
        End With

    End Sub

我假设我需要在 With Knap 中添加一些类似于 BackgroundColor 的内容,但我无法让它工作。

话虽如此,我还想给文本加下划线,更改其字体和字体大小以及使其变为粗体。

【问题讨论】:

  • 背景色有帮助吗?
  • OleObject 封装了CommandButton 并通过.Object 公开其接口,因此.Object.BackColor = vbRed.Object.<any button property> = xxx
  • 在 With 中添加 .BackColor = RGB(255,0,0) 会导致运行时错误 '438' 对象不支持此属性或方法
  • @Alex K. 那行得通,可爱。您可以将其添加为答案,以便我关闭问题吗?

标签: vba excel


【解决方案1】:

OleObject 封装了CommandButton 并通过.Object 公开其接口,因此.Object.BackColor = vbRed

您可以使用类型化变量来获取智能感知:

Dim Button As CommandButton
With Knap
    Set Button = .Object
    With Button
        .Caption = "Eksporter til PDF"
        .BackColor = vbRed
        .Font.Underline = True
        ...
    End With
    ...
End With

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多