Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从VBA自定义ActiveX按钮_Vba_Excel - Fatal编程技术网

从VBA自定义ActiveX按钮

从VBA自定义ActiveX按钮,vba,excel,Vba,Excel,我制作了一段代码,当你点击一个按钮时,复制一张工作表,将其格式化,然后添加一个新的按钮,并为其指定不同的宏 我的问题是,我的两个按钮都是灰色的,我想定制它们 第一个按钮是Excel控件元素,始终显示在原始工作表上。我已经改变了字体,字体大小,下划线,并使其加粗,通过右键点击它,并进入格式化菜单,但我找不到改变其背景颜色的选项 第二个按钮是通过VBA创建的,是一个ActiveX按钮。添加它的代码如下所示 Sub TilføjKnap() Dim Plads As Range Dim Knap As

我制作了一段代码,当你点击一个按钮时,复制一张工作表,将其格式化,然后添加一个新的按钮,并为其指定不同的宏

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

第一个按钮是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
我假设我需要在Knap中添加一些背景色,但我无法让它工作


话虽如此,我还想在文本下面加下划线,更改其字体和字体大小,并将其加粗。

OleObject封装了
命令按钮
,并通过
.Object
so
.Object.BackColor=vbRed
公开其界面

您可以使用类型化变量来获取intellisense:

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

backcolor是否有帮助?
OleObject
封装了
CommandButton
,并通过
.Object
so
.Object.backcolor=vbRed
.Object公开了它的界面xxx
Adding.BackColor=RGB(255,0,0)在中导致运行时错误“438”对象不支持此属性或方法@Alex K。这很有效,可爱。你能把它作为一个答案,这样我就可以结束这个问题了吗?