vba 任何人都可以在 Excel 2010 中显示按钮面 ID 列表

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7382624/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 11:51:42  来源:igfitidea点击:

Could Anyone Show List of Button Face Id in Excel 2010

excelexcel-vbaexcel-2010vba

提问by indrap

I would like to create costum menu button using VBA in my excel 2010 file using predefined excel button that use face id. In my case i would like to use "lock" and "refresh" icon, but doesn`t know the face id for that icon. could anyone show or point me the list of button and face id used in excel 2010?

我想使用使用面部 ID 的预定义 excel 按钮在我的 excel 2010 文件中使用 VBA 创建服装菜单按钮。就我而言,我想使用“锁定”和“刷新”图标,但不知道该图标的面部 ID。任何人都可以显示或指出我在 excel 2010 中使用的按钮和面部 ID 列表吗?

采纳答案by Reafidy

Have a look here:

看看这里:

Face ID's

人脸识别

Its an addin for MS excel. Works for excel 97 and later.

它是 MS excel 的插件。适用于 excel 97 及更高版本。

回答by Horst Schmid

The following Sub BarOpen()works with Excel 2010, most probably also many other versions also, and generates in the Tab "Add-Ins" a custom, temporary toolbar with drop-downs to show the FaceIDs from 1 .. 5020 in groups of 30 items.

下面的Sub BarOpen()适用于 Excel 2010,很可能也适用于许多其他版本,并在“加载项”选项卡中生成一个自定义的临时工具栏,其中包含下拉列表以显示 1 .. 5020 中的 FaceID 组30 项。

Option Explicit

Const APP_NAME = "FaceIDs (Browser)"

' The number of icons to be displayed in a set.
Const ICON_SET = 30

Sub BarOpen()
  Dim xBar As CommandBar
  Dim xBarPop As CommandBarPopup
  Dim bCreatedNew As Boolean
  Dim n As Integer, m As Integer
  Dim k As Integer

  On Error Resume Next
  ' Try to get a reference to the 'FaceID Browser' toolbar if it exists and delete it:
  Set xBar = CommandBars(APP_NAME)
  On Error GoTo 0
  If Not xBar Is Nothing Then
    xBar.Delete
    Set xBar = Nothing
  End If

  Set xBar = CommandBars.Add(Name:=APP_NAME, Temporary:=True) ', Position:=msoBarLeft
  With xBar
    .Visible = True
    '.Width = 80
    For k = 0 To 4 ' 5 dropdowns, each for about 1000 FaceIDs
      Set xBarPop = .Controls.Add(Type:=msoControlPopup) ', Before:=1
      With xBarPop
        .BeginGroup = True
        If k = 0 Then
          .Caption = "Face IDs " & 1 + 1000 * k & " ... "
        Else
          .Caption = 1 + 1000 * k & " ... "
        End If
        n = 1
        Do
          With .Controls.Add(Type:=msoControlPopup) '34 items * 30 items = 1020 faceIDs
            .Caption = 1000 * k + n & " ... " & 1000 * k + n + ICON_SET - 1
            For m = 0 To ICON_SET - 1
              With .Controls.Add(Type:=msoControlButton) '
                .Caption = "ID=" & 1000 * k + n + m
                .FaceId = 1000 * k + n + m
              End With
            Next m
          End With
          n = n + ICON_SET
        Loop While n < 1000 ' or 1020, some overlapp
      End With
    Next k
  End With 'xBar
End Sub

回答by ClearBlueSky85

Modified previous answerto create numerous toolbars with sets of 10 icons. Can change code (comment/un-comment) number of toolbars (performance may be slow on slower machines)

修改了先前的答案以创建具有 10 个图标集的众多工具栏。可以更改代码(注释/取消注释)工具栏的数量(在较慢的机器上性能可能会很慢)

The last icon number for Office 2013 that I could find was 25424 for OneDrive

我能找到的 Office 2013 的最后一个图标编号是 OneDrive 的 25424

Sub FaceIdsOutput()
' ==================================================
' FaceIdsOutput Macro
' ==================================================
' =========================
Dim sym_bar As CommandBar
Dim cmd_bar As CommandBar
' =========================
Dim i_bar As Integer
Dim n_bar_ammt As Integer
Dim i_bar_start As Integer
Dim i_bar_final As Integer
' =========================
Dim icon_ctrl As CommandBarControl
' =========================
Dim i_icon As Integer
Dim n_icon_step As Integer
Dim i_icon_start As Integer
Dim i_icon_final As Integer
' =========================
n_icon_step = 10
' =========================
i_bar_start = 1
n_bar_ammt =  500
' i_bar_start = 501
' n_bar_ammt =  1000
' i_bar_start = 1001
' n_bar_ammt =  1500
' i_bar_start = 1501
' n_bar_ammt =  2000
' i_bar_start = 2001
' n_bar_ammt =  2543
i_bar_final = i_bar_start + n_bar_ammt - 1
' =========================
' delete toolbars
' =========================
For Each cmd_bar In Application.CommandBars
    If InStr(cmd_bar.Name,"Symbol") <> 0 Then
        cmd_bar.Delete
    End If
Next
' =========================
' create toolbars
' =========================
For i_bar = i_bar_start To i_bar_final
    On Error Resume Next
    Set sym_bar = Application.CommandBars.Add _
        ("Symbol" & i_bar, msoBarFloating, Temporary:=True)
    ' =========================
    ' create buttons
    ' =========================
    i_icon_start = (i_bar-1) * n_icon_step + 1
    i_icon_final = i_icon_start + n_icon_step - 1
    For i_icon = i_icon_start To i_icon_final
        Set icon_ctrl = sym_bar.Controls.Add(msoControlButton)
        icon_ctrl.FaceId = i_icon
        icon_ctrl.TooltipText = i_icon
        Debug.Print ("Symbol = " & i_icon)
    Next i_icon
    sym_bar.Visible = True
Next i_bar
End Sub
Sub DeleteFaceIdsToolbar()
' ==================================================
' DeleteFaceIdsToolbar Macro
' ==================================================
Dim cmd_bar As CommandBar
For Each cmd_bar In Application.CommandBars
    If InStr(cmd_bar.Name,"Symbol") <> 0 Then
        cmd_bar.Delete
    End If
Next
End Sub

回答by indrap

I found it in this location what i`m looking at

我在这个位置找到了我正在看的东西

http://support.microsoft.com/default.aspx?scid=kb;[LN];Q213552

http://support.microsoft.com/default.aspx?scid=kb;[LN];Q213552

The table contain the Control and id (Face Id) used in excel. So for "Refresh" button the face id is 459, but it only work on the id less than 3 digit.

该表包含 Excel 中使用的 Control 和 id(Face Id)。因此,对于“刷新”按钮,面部 ID 为 459,但它仅适用于小于 3 位的 ID。

and this generator(by input start face id and end face id) then click show button faces, you get the list of icon on the range (to download it must login first)

和这个生成器(通过输入开始面ID和结束面ID)然后点击显示按钮面,你会得到范围上的图标列表(下载它必须先登录)

http://www.ozgrid.com/forum/showthread.php?t=39992

http://www.ozgrid.com/forum/showthread.php?t=39992

and this for Ribbon Toolbar

这对于功能区工具栏

http://www.rondebruin.nl/ribbon.htm

http://www.rondebruin.nl/ribbon.htm

回答by konstantin

short script writes ten (loop set for 10) FaceID's add. as entry into toolbar Tab "Add-In" and with "Benutzerdefinierte Symbolliste l?schen" - you erase this add entry ( mark and right mouse click) - works with excel 2010/2013

简短的脚本编写了十个(循环设置为 10 个)FaceID 的添加。作为工具栏选项卡“加载项”和“Benutzerdefinierte Symbolliste l?schen”的条目-您删除此添加条目(标记并单击鼠标右键)-与 excel 2010/2013 一起使用

Sub FaceIdsAusgeben()
Dim symb As CommandBar
Dim Icon As CommandBarControl
Dim i As Integer
On Error Resume Next
Set symb = Application.CommandBars.Add _
("Symbole", msoBarFloating)
For i = 1 To 10
Set Icon = symb.Controls.Add(msoControlButton)
Icon.FaceId = i
Icon.TooltipText = i
Debug.Print ("Symbole = " & i)
Next i
symb.Visible = True
End Sub

回答by konstantin

script provides on worksheet name of controls excel 2010/2013

脚本在 excel 2010/2013 控件的工作表名称上提供

Sub IDsErmitteln()
Dim crtl As CommandBarControl
Dim i As Integer
Worksheets.Add
On Error Resume Next
i = 1
For Each crtl In Application.CommandBars(1).Controls(1).Controls
Cells(i, 1).Value = crtl.Caption
Cells(i, 2).Value = crtl.ID
i = i + 1
Next crtl
End Sub