vb 6.0 を使用してセルを作成する場合、数値が 1 ~ 9 で終わらない場合、小数点以下 2 桁で金額を表示するように強制できません。たとえば、59.12 は正しく表示されますが、59.10 と入力すると、セルには 59.1 が表示されます。さまざまな形式とテキスト出力を試しましたが、成功しませんでした。
私たちが試したことに対する答えとして、以下は私たちが試したコードのうち最も注目された部分の一部です。
StartForm:
ActiveWorkbook.Styles.Add(Name:="NelcoAmt").NumberFormat = "#.00"
'ActiveWorkbook.Styles("Number").NumberFormat = "######.00"
'ActiveWorkbook.Styles("Number").Application.FixedDecimalPlaces = 2
'ActiveWorkbook.Styles("Currency").Application.Caption = ""
'ActiveWorkbook.Styles("Currency").IncludePatterns = False
'ActiveWorkbook.Styles("Currency").Application. = ""
'ActiveWorkbook.Styles("Currency").Application.
'xlSheet.Cells(1, 34).NumberFormat = "@"
'xlSheet.Cells(2, 34).NumberFormat = "#.00"
'xlSheet.Cells(2, 34).Format = "#.00"
ActiveWorkbook.Styles("NelcoAmt").Application.FixedDecimalPlaces = 2
xlSheet.Cells(2, 34).Style = "NelcoAmt": '.NumberFormat = "#.00": 'Number
'For i% = 1 To ActiveWorkbook.Styles.Count
'Text$ = ActiveWorkbook.Styles(i%).Name
'xlSheet.Cells(i%, 1).Style = Text$
'xlSheet.Cells(i%, 1).Value = 59.4
'xlSheet.Cells(i%, 2).Value = Text$
'Next i%
Rem-----9/15/14---set header for variables
xlSheet.Cells(1, 1).Value = "UniqueFormKey"
xlSheet.Cells(1, 2).Value = "FormName"
xlSheet.Cells(1, 3).Value = "OR_EFIN"
xlSheet.Cells(1, 4).Value = "OR_Type"
Rem======================================start of test section
Dim NumAns As Double
'7/16/15
'NumAns = Format$(Format$(Val(Frm941Inp.Scr941(19)), "########.00"), "@@@@@@@@@@@")
txtOut = Format$(Format$(Val(Frm941Inp.Scr941(19)), "########.00"), "@@@@@@@@@@@")
'NumAns = FormatNumber((Val(Frm941Inp.Scr941(19))), 2)
NumAns = Val(Frm941Inp.Scr941(19))
If Val(Frm941Inp.Scr941(18)) = 0 Then txtOut = "0.00"
txtOut = Frm941Inp.Scr941(19)
'xlSheet.Cells(2, 34).NumberFormat = "@": ' = txtOut: '"########.00"]
'xlSheet.Cells(2, 34) = (FormatNumber(Val(Frm941Inp.Scr941(19)), 2), "text"): 'txtOut ', "########.00"): '5d 2 tax on add medi wage
'xlSheet.Cells(2, 34) = "'" & FormatNumber(Val(Frm941Inp.Scr941(19)), 2): 'txtOut ', "########.00"): '5d 2 tax on add medi wage
'txtOut = "'" & txtOut
xlSheet.Cells(2, 34).Style.NumberFormat = "#.00": 'Number
xlSheet.Cells(2, 34) = Format(NumAns, "#.00"): 'txtOut: 'Val(Frm941Inp.Scr941(19)): 'txtOut ', "########.00"): '5d 2 tax on add medi wage
'xlSheet.Cells(2, 34).Style.NumberFormat = "#.00": 'Number
'xlSheet.Cells(2, 34).NumberFormat = "#.00"
'xlSheet.Cells(2, 34).Value = Val(Frm941Inp.Scr941(19))
'xlSheet.Cells(2, 34).value = FormatNumber(Val(Frm941Inp.Scr941(19)), 2): '"#######.00")
'xlSheet.Cells(2, 34).Value = Format$(Format$(Val(Frm941Inp.Scr941(19)), "########.00"), "@@@@@@@@@@@")
'xlSheet.Cells(2, 34).Value = Val(Frm941Inp.Scr941(19)): '5d 2 tax on add medi wage
Rem===================================end of test section=================================================
答え1
スプレッドシートの場合: セルに表示される内容と実際に保存される内容は大きく異なる場合があります。
例: 日付と時刻の値は 1 日あたり 1.0 で、時間、分、秒は小数点以下で表されます。したがって、42205.5 は「2015-07-20 12:00」に相当します。
「59.1」(または小数点以下 2 桁に丸められる可能性のあるその他の数値) を「59.10」と表示するには、表示形式を「0.00」などに設定する必要があります。
押したままにして、 をCTRL押します1。ダイアログで、「数値」を見つけてクリックし、「小数点以下の桁数」を「2」に変更します。クリックしてOK
設定し、ダイアログを終了します。
別の方法としては、同じダイアログで「カスタム」(LibreOffice の場合は「ユーザー定義」)を使用し、「フォーマット コード」として「0.00」と入力すると、同じ結果になります。
VBA から正確にどのように実行するのでしょうか? それはあなたの課題として残しておきます。