Option Explicit '金種計算クラス '金額は3桁ごとにカンマ区切り 'プロパティはメンバー以外アクセスできない 'edit 2004/06/17 円未満の切り捨てを追加 'プロパティの実体 Private mlngFID As Long '社員ID Private mlngGoukei As Long '金種計算前金額 Private mlng1Yen As Long '1円 Private mlng5Yen As Long '5円 Private mlng10Yen As Long '10円 Private mlng50Yen As Long '50円 Private mlng100Yen As Long '100円 Private mlng500Yen As Long '500円 Private mlng1000Yen As Long '1000円 Private mlng2000Yen As Long '2000円 Private mlng5000Yen As Long '5000円 Private mlng10000Yen As Long '10000円 Public Property Let FID(ByVal lngFID As Long) mlngFID = lngFID End Property Public Property Get FID() As Long FID = mlngFID End Property 'プロパティの公開 Public Sub GetProperty(ParamArray vntArray() As Variant) '引数[]:プロパティの公開 vntArray(0) = mlngGoukei vntArray(1) = mlng10000Yen vntArray(2) = mlng5000Yen vntArray(3) = mlng2000Yen vntArray(4) = mlng1000Yen vntArray(5) = mlng500Yen vntArray(6) = mlng100Yen vntArray(7) = mlng50Yen vntArray(8) = mlng10Yen vntArray(9) = mlng5Yen vntArray(10) = mlng1Yen End Sub 'ワークシートへ書き出し Public Sub LetProperty(ByVal objws As Worksheet, ByVal lngRow As Long, ByVal bytCol As Byte) '引数[objWS]:ワークシート '引数[lngRow]:レコード '引数[bytCol]:フィールド objws.Cells(lngRow, bytCol).Value = mlngFID objws.Cells(lngRow, bytCol + 1).Value = Format$(mlngGoukei, "#,##0") objws.Cells(lngRow, bytCol + 2).Value = Format$(mlng10000Yen, "#,##0") objws.Cells(lngRow, bytCol + 3).Value = Format$(mlng5000Yen, "#,##0") objws.Cells(lngRow, bytCol + 4).Value = Format$(mlng2000Yen, "#,##0") objws.Cells(lngRow, bytCol + 5).Value = Format$(mlng1000Yen, "#,##0") objws.Cells(lngRow, bytCol + 6).Value = Format$(mlng500Yen, "#,##0") objws.Cells(lngRow, bytCol + 7).Value = Format$(mlng100Yen, "#,##0") objws.Cells(lngRow, bytCol + 8).Value = Format$(mlng50Yen, "#,##0") objws.Cells(lngRow, bytCol + 9).Value = Format$(mlng10Yen, "#,##0") objws.Cells(lngRow, bytCol + 10).Value = Format$(mlng5Yen, "#,##0") objws.Cells(lngRow, bytCol + 11).Value = Format$(mlng1Yen, "#,##0") End Sub '金種計算 Public Sub CalculateKinsyu(ByVal lngKingaku As Long) '引数[lngKingaku]:カンマ区切り金額 mlngGoukei = CLng(lngKingaku) Call Get1Yen(lngKingaku) Call Get5Yen(lngKingaku) Call Get10Yen(lngKingaku) Call Get50Yen(lngKingaku) Call Get100Yen(lngKingaku) Call Get500Yen(lngKingaku) Call Get1000Yen(lngKingaku) Call Get2000Yen(lngKingaku) Call Get5000Yen(lngKingaku) Call Get10000Yen(lngKingaku) End Sub '1円 Public Sub Get1Yen(ByVal strYen As String) '引数[strYen]:カンマ区切り金額 Dim str1Yen As String If Len(strYen) >= 1 Then str1Yen = Right(strYen, 1) If str1Yen < 5 Then mlng1Yen = str1Yen Else mlng1Yen = str1Yen - 5 End If Else mlng1Yen = 0 End If End Sub '5円 Public Sub Get5Yen(ByVal strYen As String) '引数[strYen]:カンマ区切り金額 Dim str5Yen As String If Len(strYen) >= 1 Then str5Yen = Right(strYen, 1) If str5Yen < 5 Then mlng5Yen = 0 Else mlng5Yen = 1 End If Else mlng5Yen = 0 End If End Sub '10円 Public Sub Get10Yen(ByVal strYen As String) '引数[strYen]:カンマ区切り金額 Dim str10Yen As String If Len(strYen) >= 2 Then str10Yen = Right(strYen, 2) str10Yen = Int(str10Yen / 10) * 10 If str10Yen < 50 Then mlng10Yen = Mid$(str10Yen, 1, 1) Else mlng10Yen = Mid$(str10Yen, 1, 1) - 5 End If Else mlng10Yen = 0 End If End Sub '50円 Public Sub Get50Yen(ByVal strYen As String) '引数[strYen]:カンマ区切り金額 Dim str50Yen As String If Len(strYen) >= 2 Then str50Yen = Right(strYen, 2) str50Yen = Int(str50Yen / 10) * 10 If str50Yen < 50 Then mlng50Yen = 0 Else mlng50Yen = 1 End If Else mlng50Yen = 0 End If End Sub '100円 Public Sub Get100Yen(ByVal strYen As String) '引数[strYen]:カンマ区切り金額 Dim str100Yen As String If Len(strYen) >= 3 Then str100Yen = Right(strYen, 3) str100Yen = Int(str100Yen / 100) * 100 If str100Yen < 500 Then mlng100Yen = Mid$(str100Yen, 1, 1) Else mlng100Yen = Mid$(str100Yen, 1, 1) - 5 End If Else mlng100Yen = 0 End If End Sub '500円 Public Sub Get500Yen(ByVal strYen As String) '引数[strYen]:カンマ区切り金額 Dim str500Yen As String If Len(strYen) >= 3 Then str500Yen = Right(strYen, 3) str500Yen = Int(str500Yen / 100) * 100 If str500Yen < 500 Then mlng500Yen = 0 Else mlng500Yen = 1 End If Else mlng500Yen = 0 End If End Sub '1000円 Public Sub Get1000Yen(ByVal strYen As String) '引数[strYen]:カンマ区切り金額 Dim str1000Yen As String If Len(strYen) >= 4 Then str1000Yen = Right(strYen, 4) str1000Yen = Int(str1000Yen / 1000) * 1000 If str1000Yen < 5000 Then mlng1000Yen = Mid$(str1000Yen, 1, 1) Mod 2 ElseIf str1000Yen = 2000 Or str1000Yen = 5000 Then mlng1000Yen = 0 Else mlng1000Yen = Mid$((str1000Yen - 5000), 1, 1) Mod 2 End If Else mlng1000Yen = 0 End If End Sub '2000円 Public Sub Get2000Yen(ByVal strYen As String) '引数[strYen]:カンマ区切り金額 Dim str2000Yen As String If Len(strYen) >= 4 Then str2000Yen = Right(strYen, 4) str2000Yen = Int(str2000Yen / 1000) * 1000 If str2000Yen < 5000 Then mlng2000Yen = Int(str2000Yen / 2000) ElseIf str2000Yen = 5000 Then mlng2000Yen = 0 Else mlng2000Yen = Int((str2000Yen - 5000) / 2000) End If Else mlng2000Yen = 0 End If End Sub '5000円 Public Sub Get5000Yen(ByVal strYen As String) '引数[strYen]:カンマ区切り金額 Dim str5000Yen As String If Len(strYen) >= 4 Then str5000Yen = Right(strYen, 4) str5000Yen = Int(str5000Yen / 1000) * 1000 If str5000Yen < 5000 Then mlng5000Yen = 0 Else mlng5000Yen = 1 End If Else mlng5000Yen = 0 End If End Sub '10000円 Public Sub Get10000Yen(ByVal strYen As String) '引数[strYen]:カンマ区切り金額 Dim str10000Yen As String If Len(strYen) >= 5 Then str10000Yen = Left(strYen, Len(strYen) - 4) mlng10000Yen = str10000Yen Else mlng10000Yen = 0 End If End Sub