【问题标题】:VBScript: Use Shape property in VBA (Excel)VBScript:在 VBA (Excel) 中使用 Shape 属性
【发布时间】:2018-05-09 12:26:44
【问题描述】:

我编写了一个 VBScript 来将数据导出到 .xlsx 文件中。下拉控件应过滤数据。以下代码展示了我的添加方法:

sub AddDropDownElement
    FirstSheet.DropDowns.Add(0, 0, 100, 15).Name = "SheetFilter"

    with FirstSheet.Shapes("SheetFilter")
        .IncrementLeft 20.4
        .IncrementTop 34.2

        .Placement = xlFreeFloating
        .PrintObject = False
        .ListFillRange = ""
        .LinkedCell = ""
        .DropDownLines = 12
        .Display3DShading = False
    End With
end Sub

FirstSheet 是“Excel.Application”的工作表。

执行增量方法非常有效。这些属性在 VBScript 中是未知的。

【问题讨论】:

    标签: excel vba controls shapes


    【解决方案1】:

    您的一些属性不是Shape 对象的直接成员:一些属于ControlFormat,一个属于DropDown

    Sub AddDropDownElement()
        Const DD_NM = "SheetFilter"
    
        FirstSheet.DropDowns.Add(0, 0, 100, 15).Name = DD_NM
    
        With FirstSheet.Shapes(DD_NM)
            .IncrementLeft 20.4
            .IncrementTop 34.2
            .Placement = xlFreeFloating
            With .ControlFormat
                .PrintObject = False
                .ListFillRange = ""
                .LinkedCell = ""
                .DropDownLines = 12
            End With
        End With
        FirstSheet.DropDowns(DD_NM).Display3DShading = True
    
    End Sub
    

    在 Excel 2013 中测试

    【讨论】:

    • 原则上你是对的,但例如属性“Placement”未知。
    • 您是否添加了对 Excel 的引用,或者您是否使用后期绑定?如果是后期绑定,你定义xlFreeFloating了吗?
    • 失败信息错误。正如你所说,xlFreeFloating 没有定义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多