|
こんばんは。
>
>Q1
>VBAでは通貨型ですれば扱えるような記載はwebではあったのですが
>下記マクロでは15桁制限があるようです
Currencyだって、15桁程度ですよ!!
よろずやさんの記述のように10進型を使えば、桁数の多い数値を扱えます。
Sub sample1()
Dim x As Variant
x = CDec("1234567890123456789012345678")
MsgBox x
MsgBox x + 1
End Sub
でも、10進型を使っても28、29桁辺りが限界です。
35051000100001000100004000200000602
これを扱うのは、文字列として扱うしかないと思いますよ!!
大きい桁らの二つの数字の大小さえわかれば良いのなら、前投稿のように
文字列の数字をStrcomp関数を使って比較します。
'=======================================================
Sub test()
MsgBox mystrcomp("3", "11")
MsgBox mystrcomp("12333333333333333333333333333333333333333333333333333", "12333333333333333333333333333333333333333333333333333")
MsgBox mystrcomp("35051000100001000100004000200000602", "35051000100001000100004000200000601")
End Sub
'======================================================================
Function mystrcomp(ByVal strnum1 As String, strnum2 As String) As Long
' mystrcomp 1 strnum1>strnum2
' 0 strnum1=strnum2
' -1 strnum1<strnum2
Dim x As String
Dim y As String
x = Space(Application.Max(Len(strnum1), Len(strnum2)))
y = x
RSet x = strnum1
RSet y = strnum2
mystrcomp = StrComp(x, y)
End Function
>
>Q2
>またb5-b11でセル表示が、右寄せ、左寄せの原因がわかりません
これは、意味がわかりません
>Q3
>結構わずらわしそうな気がしますが
>15桁以上数値扱いしたい場合は、15桁以下で分割処理で結合みたいな方法しかないのでしょうか
すべての数値を文字列化して、比較することはStrcompを使えばできますよ!!
大きい桁(35桁程度)の演算がしたいなら、
足し算や引き算をVBAでシュミレートしなければなりませんねえ。
|
|