有効数字 修正をはじめてます。
有効数字を処理する部分がまずそうだったので修正中です。
Function 有効数字表示(値 As Variant, 桁 As Long, 指数表示 As Boolean) As String Dim Val_ As String, Format_ As String If 桁 = 1 Then Format_ = "0" Else Format_ = "0." & String(桁 - 1, "0") & "e-0" Val_ = Format(CSng(値), Format_) If 指数表示 = True Then 有効数字表示 = Replace(Val_, "e", "×10^") Else 有効数字表示 = CSng(Left(Val_, InStr(Val_, "e") - 1) & "e" & Mid(Val_, InStr(Val_, "e") + 1)) If InStr(有効数字表示, "E") = 0 Then Dim 数値スタート As Long, i As Long, 数値桁 As Long For i = 1 To Len(有効数字表示) If Mid(有効数字表示, i, 1) <> "0" And Mid(有効数字表示, i, 1) <> "." Then 数値スタート = i Exit For End If Next 数値桁 = Len(有効数字表示) - 数値スタート + 1 If 桁 > 数値桁 Then If Len(有効数字表示) = 1 Then 有効数字表示 = 有効数字表示 & "." 有効数字表示 = 有効数字表示 & String(桁 - 数値桁, "0") End If End If End If End Function
数値桁 = Len(有効数字表示) - 数値スタート + 1
If 桁 > 数値桁 Then
If Len(有効数字表示) = 1 Then 有効数字表示 = 有効数字表示 & "."
有効数字表示 = 有効数字表示 & String(桁 - 数値桁, "0")
End If
最後当たりのこの辺がうまくいっていません。
考え中。
追記
とりあえず,トライアンドエラーでいじってみました。
フローチャートを書いて根元から考えようとしないヤツですみません(;´▽`A``
Function 有効数字表示(値 As Variant, 桁 As Long, 指数表示 As Boolean) As String Dim Val_ As String, Format_ As String If 桁 = 1 Then Format_ = "0e-0" Else Format_ = "0." & String(桁 - 1, "0") & "e-0" Val_ = Format(CSng(値), Format_) If 指数表示 = True Then 有効数字表示 = Replace(Val_, "e", "×10^") Else Dim 数値部分, 桁部分, tmp, tmp2 数値部分 = Left(Val_, InStr(Val_, "e") - 1) 桁部分 = Mid(Val_, InStr(Val_, "e") + 1) 有効数字表示 = CSng(数値部分 & "e" & 桁部分) If 桁 = 1 Then Exit Function If InStr(有効数字表示, "E") = 0 Then If InStr(有効数字表示, ".") > 0 Then tmp = Len(有効数字表示) - 1 Else tmp = Len(有効数字表示) tmp = Format(CSng(数値部分) / CSng(有効数字表示), "0e-0") tmp = Mid(tmp, InStr(tmp, "e") + 1) tmp2 = Replace(数値部分, ".", "") Select Case tmp Case Is = 0 有効数字表示 = 数値部分 Case Is > 0 If tmp = 1 Then 有効数字表示 = "0." & tmp2 Else 有効数字表示 = "0." & String(tmp - 1, "0") & tmp2 End If Case Is < 0 有効数字表示 = Left(tmp2, 1 - CLng(tmp)) & "." & Mid(tmp2, 2 - CLng(tmp)) If Right(有効数字表示, 1) = "." Then 有効数字表示 = Left(有効数字表示, Len(有効数字表示) - 1) End Select End If End If End Function
イミディエイトウィンドウでいろいろやってみた感じはいけそうなんだけど・・,さすがに何度も間違ったのでまだ疑っています(;´▽`A``
あとあきらかに美しくないので,きちんと統合していこうと思います。