'金種計算クラス '変数宣言強制 Option Explicit 'プロパティ Private m1Yen As Long Private m5Yen As Long Private m10Yen As Long Private m50Yen As Long Private m100Yen As Long Private m500Yen As Long Private m1000Yen As Long Private m2000Yen As Long Private m5000Yen As Long Private m10000Yen As Long Private mMoney As Long '金種計算 Private Sub CalcYen() Dim tmp As String tmp = CStr(mMoney) '文字列に変換 Dim y As Long y = Len(tmp) If y < 1 Then Exit Sub '一の位を計算 Dim s As String If y > 0 Then s = Right(tmp, 1) m1Yen = CLng(s) Mod 5 m5Yen = Int(CLng(s) / 5) End If Dim v As Long '十の位を計算 If y > 1 Then s = Right(tmp, 2) v = Int(CLng(s) / 10) m10Yen = v Mod 5 m50Yen = Int(v / 5) End If '百の位を計算 If y > 2 Then s = Right(tmp, 3) v = Int(CLng(s) / 100) m100Yen = v Mod 5 m500Yen = Int(v / 5) End If '千の位を計算 Dim x As Long If y > 3 Then s = Right(tmp, 4) v = Int(s / 1000) x = v Mod 5 m1000Yen = x Mod 2 m2000Yen = Int(x / 2) m5000Yen = Int(v / 5) End If '万の位を計算 If y > 4 Then s = Left(tmp, y - 4) m10000Yen = CLng(s) End If End Sub '金種計算メソッド(外部公開) Public Sub GetData(ByVal lMoney As Long, ByRef vKinsyu As Variant) mMoney = lMoney 'メンバー関数 Call CalcYen vKinsyu(0) = mMoney vKinsyu(1) = m1Yen vKinsyu(2) = m5Yen vKinsyu(3) = m10Yen vKinsyu(4) = m50Yen vKinsyu(5) = m100Yen vKinsyu(6) = m500Yen vKinsyu(7) = m1000Yen vKinsyu(8) = m2000Yen vKinsyu(9) = m5000Yen vKinsyu(10) = m10000Yen End Sub 'クラスインスタンス Private Sub Class_Initialize() 'プロパティ初期化 m1Yen = 0 m5Yen = 0 m10Yen = 0 m50Yen = 0 m100Yen = 0 m500Yen = 0 m1000Yen = 0 m2000Yen = 0 m5000Yen = 0 m10000Yen = 0 mMoney = 0 End Sub