Vba 为Excel自定义UI选择动态菜单项时的性能影响
我拼凑了一个Excel工作簿,动态填充一些自定义UI下拉菜单 下面是填充菜单的代码Vba 为Excel自定义UI选择动态菜单项时的性能影响,vba,excel,ribbon,Vba,Excel,Ribbon,我拼凑了一个Excel工作簿,动态填充一些自定义UI下拉菜单 下面是填充菜单的代码 Sub GetFilterByTeam(Control As IRibbonControl, ByRef content) content = "<menu xmlns=""http://schemas.microsoft.com/office/2009/07/customui""><button id=""Team1"" label=""Team1"" onAction=""FilterTe
Sub GetFilterByTeam(Control As IRibbonControl, ByRef content)
content = "<menu xmlns=""http://schemas.microsoft.com/office/2009/07/customui""><button id=""Team1"" label=""Team1"" onAction=""FilterTeam""/><button id=""Team2"" label=""Team2"" onAction=""FilterTeam""/><button id=""Team3"" label=""Team3"" onAction=""FilterTeam""/><button id=""Team4"" label=""Team4"" onAction=""FilterTeam""/><button id=""Team5"" label=""Team5"" onAction=""FilterTeam""/><button id=""Team6"" label=""Team6"" onAction=""FilterTeam""/></menu>"
End Sub
对上述情况的简短解释
Call AddToFilterLists(....
部分原因是什么。我尝试过传递一个简单的字符串(用于测试目的)而不是control.ID,但这没有帮助
我不知所措。我想我犯了一个小小的错误,但我一辈子也弄不明白
下面是AddToFilterList的代码
Sub AddToFilterList( _
Optional Param1 As String = "", _
Optional Param2 As String = "", _
Optional Param3 As String = "", _
Optional Param4 As String = "", _
Optional Param5 As String = "", _
Optional Param6 As String = "", _
Optional Param7 As String = "", _
Optional Param8 As String = "", _
Optional Param9 As String = "", _
Optional Param10 As String = "", _
Optional Param11 As String = "", _
Optional Param12 As String = "", _
Optional Param13 As String = "", _
Optional Param14 As String = "")
Dim LO As ListObject
Dim oNewRow As ListRow
Set LO = Sheets("Filter").ListObjects("FilterTable")
Set oNewRow = LO.ListRows.Add(AlwaysInsert:=True)
oNewRow.Range.Cells(1, Column1).Value = Param1
oNewRow.Range.Cells(1, Column2).Value = Param2
oNewRow.Range.Cells(1, Column3).Value = Param3
oNewRow.Range.Cells(1, Column4).Value = Param4
oNewRow.Range.Cells(1, Column5).Value = Param5
oNewRow.Range.Cells(1, Column6).Value = Param6
oNewRow.Range.Cells(1, Column7).Value = Param7
oNewRow.Range.Cells(1, Column8).Value = Param8
oNewRow.Range.Cells(1, Column9).Value = Param9
oNewRow.Range.Cells(1, Column10).Value = Param10
oNewRow.Range.Cells(1, Column11).Value = Param11
oNewRow.Range.Cells(1, Column12).Value = Param12
End Sub
注释掉一些oNewRow=行会有所帮助,但我不明白的是,为什么性能取决于我在dynamicMenu中选择的值。这种影响是可以重复和量化的 我无法“解决”性能问题,但我通过将代码引入到FilterTeam sub的AddToFilterList中解决了这个问题。现在性能是一致的
Sub AddToFilterList( _
Optional Param1 As String = "", _
Optional Param2 As String = "", _
Optional Param3 As String = "", _
Optional Param4 As String = "", _
Optional Param5 As String = "", _
Optional Param6 As String = "", _
Optional Param7 As String = "", _
Optional Param8 As String = "", _
Optional Param9 As String = "", _
Optional Param10 As String = "", _
Optional Param11 As String = "", _
Optional Param12 As String = "", _
Optional Param13 As String = "", _
Optional Param14 As String = "")
Dim LO As ListObject
Dim oNewRow As ListRow
Set LO = Sheets("Filter").ListObjects("FilterTable")
Set oNewRow = LO.ListRows.Add(AlwaysInsert:=True)
oNewRow.Range.Cells(1, Column1).Value = Param1
oNewRow.Range.Cells(1, Column2).Value = Param2
oNewRow.Range.Cells(1, Column3).Value = Param3
oNewRow.Range.Cells(1, Column4).Value = Param4
oNewRow.Range.Cells(1, Column5).Value = Param5
oNewRow.Range.Cells(1, Column6).Value = Param6
oNewRow.Range.Cells(1, Column7).Value = Param7
oNewRow.Range.Cells(1, Column8).Value = Param8
oNewRow.Range.Cells(1, Column9).Value = Param9
oNewRow.Range.Cells(1, Column10).Value = Param10
oNewRow.Range.Cells(1, Column11).Value = Param11
oNewRow.Range.Cells(1, Column12).Value = Param12
End Sub