获取枚举的等效文本

问题描述 投票:0回答:2

我正在尝试在工作表中创建一些简单的表格,给出常见枚举的等价数字:

此示例适用于

Border
枚举变量。这些材料可以通过在MSDN中找到,但是我经常需要在不在线的情况下工作,而这种类型的“帮助”是不可用的。

我目前正在用两个单独的循环填充我的小桌子:

Sub trythisB()
    Dim i As Long
    i = 1
    For Each a In Array(xlInsideHorizontal, xlInsideVertical, xlEdgeLeft, xlEdgeRight, xlEdgeBottom, xlEdgeTop)
            Cells(i, 2) = a
            i = i + 1
    Next a
End Sub

Sub trythisA()
    Dim i As Long
    i = 1
    For Each a In Array("xlInsideHorizontal", "xlInsideVertical", "xlEdgeLeft", "xlEdgeRight", "xlEdgeBottom", "xlEdgeTop")
            Cells(i, 1) = a
            i = i + 1
    Next a
End Sub

我真的很想避免保留两个单独的数组;一个用于文本字符串,另一个用于枚举。

有没有办法从文本字符串中获取枚举,或者将枚举转换为文本字符串??

如有任何建议,我们将不胜感激。

vba excel enumeration
2个回答
6
投票

我不认为您需要以编程方式生成这样的列表才能创建它。 Microsoft 在 MSDN 中提供了所有这些的定义:

https://msdn.microsoft.com/en-us/vba/excel-vba/articles/constants-enumeration-excel

您可以从那里下载它并将其粘贴到您的电子表格中。您甚至可以通过网络查询使其动态化,这样您就可以及时了解任何更改。这是一个可以做到这一点的宏:

Sub GetEnumerationDefinitions()

    ActiveWorkbook.Queries.Add Name:="Enumerations", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Web.Page(Web.Contents(""https://msdn.microsoft.com/en-us/vba/excel-vba/articles/constants-enumeration-excel""))," & Chr(13) & "" & Chr(10) & "    Data0 = Source{0}[Data]," & Chr(13) & "" & Chr(10) & "    #""Changed Type"" = Table.TransformColumnTypes(Data0,{{""Name"", type text}, {""Value"", Int64.Type}, {""Description"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Changed Type"""
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Enumerations"";Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [Enumerations]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Table_0"
        .Refresh BackgroundQuery:=False
    End With
End Sub

0
投票

很好的答案,@Greg Viers! MSDN 上有类似的 Word 列表吗?

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.