让VBA产生百分比,而不是小数

时间:2018-05-14 10:08:14

标签: excel vba excel-vba

以下是我正在尝试编写的一些代码的示例。 Str2指的是Sheet1中的单元格B2 - 这只是一个简单的“10%”格式化为百分比。但是,当我应用宏时,它显示为十进制等效值。请问你能告诉我如何显示百分比 - 10%?

Sub DecimalAsPercent()

Dim str1 As String, str2 As String, str3 As String

str1 = "Policy returns "
str2 = Range("Sheet1!B2").Value
str3 = " Per Annum"

Range("B2").Value = str1 & str2 & str3

Range("B2").Characters(Start:=Len(str1) + Len(str2) + 1, Length:=(str3)).Font.Bold = True

End Sub

导致“政策返回0.1 每年

我也试过以下,但没有用。

Sub DecimalAsPercent()

Dim str1 As String, str2 As String, str3 As String

str1 = "Policy returns "
str2 = Range("Sheet1!B2").Value
str3 = " Per Annum"

Range("B2").Value = str1 & str2 & str3

Range("B2").Characters(Start:=Len(str1) + Len(str2) + 1, Length:=(str3)).Font.Bold = True

End Sub

导致“政策返回真实每年

提前致谢!

2 个答案:

答案 0 :(得分:4)

这将返回10%

Sub DecimalAsPercent()
    Dim str1 As String, str2 As String, str3 As String

    With Sheet1
        str1 = "Policy returns "
        str2 = Format(.Range("B2").Value2, "0%")
        str3 = " Per Annum"

        .Range("B2").Value = str1 & str2 & str3
    End With
End Sub

答案 1 :(得分:1)

在您的示例中,单元格B2的内容为0.1,而10%表示。要将变量设置到变量中,请使用.text而不是value

str = sheet1.Range("B2").value  ' will write '0.1 to str
str = sheet1.Range("B2").text   ' will write '10% to str