Excel UserForm VBA中的格式下拉列表

Excel UserForm VBA中的格式下拉列表,excel,vba,userform,Excel,Vba,Userform,我在参考选项卡中有一个增值税税率列表,显示为0.0%、2.0%、5.0%、17.5%、20.0%。但是,当这些税率添加到用户表单时,它们会更改为以下格式:0.00、0.02、0.05、0.175和0.2 有人能告诉我如何更正格式吗 #importing the VAT Rate list NewRangePlan.VATRateDD.List = Ref.Range("AE2:AE7").Value Short。使用MMult() 如果您可以在下拉列表中使用不带百分号(“%”)的显示,则可以通

我在参考选项卡中有一个增值税税率列表,显示为0.0%、2.0%、5.0%、17.5%、20.0%。但是,当这些税率添加到用户表单时,它们会更改为以下格式:0.00、0.02、0.05、0.175和0.2

有人能告诉我如何更正格式吗

#importing the VAT Rate list
NewRangePlan.VATRateDD.List = Ref.Range("AE2:AE7").Value

Short
。使用
MMult()

如果您可以在下拉列表中使用不带百分号(“%”)的显示,则可以通过WorksheetFunction
MMult()
尝试以下方法;否则,正如braX在评论中提到的,您“将不得不循环通过它们并在运行时格式化它们”

Dim percents As Range
Set percents = Sheet1.Range("AE2:AE7")  ' set percent data range to memory
Dim factor100 As Range
Set factor100 = Sheet1.Range("A" & Sheet1.Rows.Count).Resize(1, percents.Rows.Count)
    factor100 = 100                     ' write factor 100 to temporary range
With Me.VATRateDD                       ' assuming DropDown reference within the UserForm code module
    .List = WorksheetFunction.MMult(percents, factor100)
End With
factor100 = vbNullString                ' clear temp range
进一步说明


不要寻址窗体的默认实例。如果您引用的是UserForm代码模块中的控件,则可以使用
Me
限定符来寻址表单的当前实例。-仅供参考,建议阅读以获得更深入的了解。

使用
.Text
而不是
.Value
,前提是它们在工作表上的格式正确。很抱歉,返回的错误消息是“无法设置列表属性。无效的属性数组索引。NewRangePlan.VATRateDD.List=Ref.Range”(“AE2:AE7”).Text但是
.Value
工作得很好?那么我想您必须循环遍历它们并在运行时格式化它们。^
.Text
不像
.Value
那样返回数组。返回
Null
,除非源区域中的每个单元格都有相同的文本。@BigBen很高兴知道(为什么我把它作为评论而不是回答,因为我从来没有尝试过)。我想我一直在循环,因为我经常希望多个列的格式不同。