問題があり、何が起こっているのか、その理由を理解できません。vbaで10または小数点以下を使用した場合のパーセント値への書式
私は多くのパーセンテージ値を持つuserformを持っています。
これらの値は、彼らは、まさにこのように見える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%
は、私はより多くのゼロを追加してみましたが、私はFormat(tb.Value, "0.000%")
私の値取得の1000年を掛けを使用する場合それは101493%
になり101,49%
になりますので、丸められてしまいます。 (さらに多くのゼロの場合はさらに)
10個以上の小数点で値を保存するにはどうすればよいですか?
ええと、「NumberFormat」と「Format」についてあなたの意見が本当にありがとうございました。あなたのコードは私に 'CDbl(tb.Value)'の型不一致エラーを与えています。それについてのアイデア? –
これは、 'tb.Value'の値が何であれ、数値に変換できないことを意味します。 'IsNumeric(tb.Value)'のような検証コードを追加したいと思うでしょう。 – Comintern
私はemtpyセルがエラーの理由だと思ったので、すでにそれをしました。しかし、それは数値のためにも機能しません。そして、これらは別のExcelセルから取った値で、パーセントで保存されます。しかし、おそらくこれは何か、我々はここで議論する必要はありません。 (数値によって私はあなたが写真で見ることができるものを意味します) –