gpt4 book ai didi

vba - 在vba中使用10或很多小数格式化为百分比

转载 作者:行者123 更新时间:2023-12-04 21:35:42 27 4
gpt4 key购买 nike

我有一个棘手的问题,我不明白发生了什么以及为什么。

我有一个包含很多百分比值的用户表单。

enter image description here

这些值来自一个 excel 表,它们看起来完全像这样。用户现在可以更改这些值并将它们放回该 Excel 表中。用户的事件也会保存在日志表中。所有值也保存在那里。我把值放在那里是这样的:

Private Sub saveV_Click()
Dim wsLog As Worksheet
Dim i As Long
Dim j As Long
Dim lastRow As Long
Dim tbNr As String
j = 3
i = 2
Set wsLog = ThisWorkbook.Worksheets("Log")
With wsLog
lastRow = findLastRow(wsLog)
lastColumn = findLastColumn(wsLog)
For Each tb In Me.Controls
If TypeName(tb) = "TextBox" Then
Select Case i
'case 2 and 3 values are fixed and not of any interest
Case 2
.Cells(lastRow + 1, 1).Value = tb.Value
Case 3
.Cells(lastRow + 1, 2).Value = tb.Value
'the following cases refer to the textboxes you can see in the other picture (there are some more)
Case 4 To 46
.Cells(lastRow + 1, j).Value = tb.Value
Case 47 To 89
.Cells(lastRow + 2, j).Value = Format(tb.Value, "0.00%")
Case 90 To 132
.Cells(lastRow + 3, j).Value = Format(tb.Value, "0.00%")
End Select
i = i + 1
j = j + 1
If j > lastColumn Then j = 3
End If
Next
End With
Unload Me
End Sub

代码本身运行良好,但它没有正确格式化值。

如果我使用 Format(tb.Value, "0.00%")我的值会四舍五入,所以 101,49316739%转至 101,49%
我尝试添加更多零,但如果我使用 Format(tb.Value, "0.000%")我的值乘以 1000 所以它变成 101493% . (更多零更多)

如何用十个(或更多)小数保存我的值?

最佳答案

Format函数将一个值转换为 String .这意味着你在这里编码......

.Cells(lastRow + 2, j).Value = Format(tb.Value, "0.00%")

...将采取 Double 101,49316739 的值并将其转换为 String “101,49%”的值。 .Cells(lastRow + 2, j).Value的数据类型是 Variant ,但你给它一个 Variant亚型 String . Excel 然后必须确定您正在编写的值是否实际上可以表示为数字。请记住, Format用于显示 可读版本一个数字 - 不适用于 存储值 .

只需让 Excel 进行格式化:
.Cells(lastRow + 2, j).Value = CDbl(tb.Value) \ 100    'Cast from string to double and scale.
.Cells(lastRow + 2, j).NumberFormat = "0.000000000000000%" 'Format the cell.

关于vba - 在vba中使用10或很多小数格式化为百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38830864/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com