'変数宣言を強制 Option Explicit 'プロパティの実態 Private m_TeiRituA As Double '計算された定率法償却率 Private m_TeiRituB As Double '公開された定率法償却率 Private m_TeiGakuA As Double '計算された定額法償却率 Private m_TeiGakuB As Double '公開された定率法償却率 Private m_Misyokyaku As Double '未償却割合 Private m_YearA As Integer '耐用年数 Private m_YearB As Integer '経過年数 '計算 Public Sub GetData(ByVal Target_YearA As Integer, ByVal Target_YearB As Integer, ByRef Ans As Variant) m_YearA = Target_YearA m_YearB = Target_YearB Call GetCulc Call GetItiran Call GetMiSyokyaku Ans(0) = m_TeiRituA Ans(1) = m_TeiRituB Ans(2) = m_TeiGakuA Ans(3) = m_TeiGakuB Ans(4) = m_Misyokyaku End Sub '定額法から定率法へ変更したときの未償却割合 Private Sub GetMiSyokyaku() Dim num As Double num = 1 - m_TeiRituB m_Misyokyaku = Int(CDbl(num ^ m_YearB * 1000 + 0.5)) / CDbl(1000) End Sub '計算式による計算 Private Sub GetCulc() '定率法 Const zan As Double = 0.1 Dim num As Double num = zan ^ (1 / m_YearA) m_TeiRituA = 1 + Int(CDbl(1 - num * 1000)) / CDbl(1000) '負数が返ってくるので、1に加える '定額法 m_TeiGakuA = Int(CDbl(1 / m_YearA * 1000)) / CDbl(1000) End Sub '公開されている表より取得(別表第九) Private Sub GetItiran() Select Case m_YearA Case Is = 2 m_TeiRituB = CDbl(0.684) m_TeiGakuB = CDbl(0.5) Case Is = 3 m_TeiRituB = CDbl(0.536) m_TeiGakuB = CDbl(0.333) Case Is = 4 m_TeiRituB = CDbl(0.438) m_TeiGakuB = CDbl(0.25) Case Is = 5 m_TeiRituB = CDbl(0.369) m_TeiGakuB = CDbl(0.2) Case Is = 6 m_TeiRituB = CDbl(0.319) m_TeiGakuB = CDbl(0.166) Case Is = 7 m_TeiRituB = CDbl(0.28) m_TeiGakuB = CDbl(0.142) Case Is = 8 m_TeiRituB = CDbl(0.25) m_TeiGakuB = CDbl(0.125) Case Is = 9 m_TeiRituB = CDbl(0.226) m_TeiGakuB = CDbl(0.111) Case Is = 10 m_TeiRituB = CDbl(0.206) m_TeiGakuB = CDbl(0.1) Case Is = 11 m_TeiRituB = CDbl(0.189) m_TeiGakuB = CDbl(0.09) Case Is = 12 m_TeiRituB = CDbl(0.175) m_TeiGakuB = CDbl(0.083) Case Is = 13 m_TeiRituB = CDbl(0.162) m_TeiGakuB = CDbl(0.076) Case Is = 14 m_TeiRituB = CDbl(0.152) m_TeiGakuB = CDbl(0.071) Case Is = 15 m_TeiRituB = CDbl(0.142) m_TeiGakuB = CDbl(0.066) Case Is = 16 m_TeiRituB = CDbl(0.134) m_TeiGakuB = CDbl(0.062) Case Is = 17 m_TeiRituB = CDbl(0.127) m_TeiGakuB = CDbl(0.058) Case Is = 18 m_TeiRituB = CDbl(0.12) m_TeiGakuB = CDbl(0.055) Case Is = 19 m_TeiRituB = CDbl(0.114) m_TeiGakuB = CDbl(0.052) Case Is = 20 m_TeiRituB = CDbl(0.109) m_TeiGakuB = CDbl(0.05) Case Is = 21 m_TeiRituB = CDbl(0.104) m_TeiGakuB = CDbl(0.048) Case Is = 22 m_TeiRituB = CDbl(0.099) m_TeiGakuB = CDbl(0.046) Case Is = 23 m_TeiRituB = CDbl(0.095) m_TeiGakuB = CDbl(0.044) Case Is = 24 m_TeiRituB = CDbl(0.092) m_TeiGakuB = CDbl(0.042) Case Is = 25 m_TeiRituB = CDbl(0.088) m_TeiGakuB = CDbl(0.04) Case Is = 26 m_TeiRituB = CDbl(0.085) m_TeiGakuB = CDbl(0.039) Case Is = 27 m_TeiRituB = CDbl(0.082) m_TeiGakuB = CDbl(0.037) Case Is = 28 m_TeiRituB = CDbl(0.079) m_TeiGakuB = CDbl(0.036) Case Is = 29 m_TeiRituB = CDbl(0.076) m_TeiGakuB = CDbl(0.035) Case Is = 30 m_TeiRituB = CDbl(0.074) m_TeiGakuB = CDbl(0.034) Case Is = 31 m_TeiRituB = CDbl(0.072) m_TeiGakuB = CDbl(0.033) Case Is = 32 m_TeiRituB = CDbl(0.069) m_TeiGakuB = CDbl(0.032) Case Is = 33 m_TeiRituB = CDbl(0.067) m_TeiGakuB = CDbl(0.031) Case Is = 34 m_TeiRituB = CDbl(0.066) m_TeiGakuB = CDbl(0.03) Case Is = 35 m_TeiRituB = CDbl(0.064) m_TeiGakuB = CDbl(0.029) Case Is = 36 m_TeiRituB = CDbl(0.062) m_TeiGakuB = CDbl(0.028) Case Is = 37 m_TeiRituB = CDbl(0.06) m_TeiGakuB = CDbl(0.027) Case Is = 38 m_TeiRituB = CDbl(0.059) m_TeiGakuB = CDbl(0.027) Case Is = 39 m_TeiRituB = CDbl(0.057) m_TeiGakuB = CDbl(0.026) Case Is = 40 m_TeiRituB = CDbl(0.056) m_TeiGakuB = CDbl(0.025) Case Is = 41 m_TeiRituB = CDbl(0.055) m_TeiGakuB = CDbl(0.025) Case Is = 42 m_TeiRituB = CDbl(0.053) m_TeiGakuB = CDbl(0.024) Case Is = 43 m_TeiRituB = CDbl(0.052) m_TeiGakuB = CDbl(0.024) Case Is = 44 m_TeiRituB = CDbl(0.051) m_TeiGakuB = CDbl(0.023) Case Is = 45 m_TeiRituB = CDbl(0.05) m_TeiGakuB = CDbl(0.023) Case Is = 46 m_TeiRituB = CDbl(0.049) m_TeiGakuB = CDbl(0.022) Case Is = 47 m_TeiRituB = CDbl(0.048) m_TeiGakuB = CDbl(0.022) Case Is = 48 m_TeiRituB = CDbl(0.047) m_TeiGakuB = CDbl(0.021) Case Is = 49 m_TeiRituB = CDbl(0.046) m_TeiGakuB = CDbl(0.021) Case Is = 50 m_TeiRituB = CDbl(0.045) m_TeiGakuB = CDbl(0.02) Case Is = 51 m_TeiRituB = CDbl(0.044) m_TeiGakuB = CDbl(0.02) Case Is = 52 m_TeiRituB = CDbl(0.043) m_TeiGakuB = CDbl(0.02) Case Is = 53 m_TeiRituB = CDbl(0.043) m_TeiGakuB = CDbl(0.019) Case Is = 54 m_TeiRituB = CDbl(0.042) m_TeiGakuB = CDbl(0.019) Case Is = 55 m_TeiRituB = CDbl(0.041) m_TeiGakuB = CDbl(0.019) Case 56 To 57 m_TeiRituB = CDbl(0.4) m_TeiGakuB = CDbl(0.018) Case Is = 58 m_TeiRituB = CDbl(0.039) m_TeiGakuB = CDbl(0.018) Case 59 To 60 m_TeiRituB = CDbl(0.038) m_TeiGakuB = CDbl(0.017) Case Is = 61 m_TeiRituB = CDbl(0.037) m_TeiGakuB = CDbl(0.017) Case Is = 62 m_TeiRituB = CDbl(0.036) m_TeiGakuB = CDbl(0.017) Case Is = 63 m_TeiRituB = CDbl(0.036) m_TeiGakuB = CDbl(0.016) Case 64 To 65 m_TeiRituB = CDbl(0.035) m_TeiGakuB = CDbl(0.016) Case Is = 66 m_TeiRituB = CDbl(0.034) m_TeiGakuB = CDbl(0.016) Case Is = 67 m_TeiRituB = CDbl(0.034) m_TeiGakuB = CDbl(0.015) Case 68 To 69 m_TeiRituB = CDbl(0.033) m_TeiGakuB = CDbl(0.015) Case Is = 70 m_TeiRituB = CDbl(0.032) m_TeiGakuB = CDbl(0.015) Case 71 To 72 m_TeiRituB = CDbl(0.032) m_TeiGakuB = CDbl(0.014) Case 73 To 74 m_TeiRituB = CDbl(0.031) m_TeiGakuB = CDbl(0.014) Case 75 To 76 m_TeiRituB = CDbl(0.03) m_TeiGakuB = CDbl(0.14) Case Is = 77 m_TeiRituB = CDbl(0.03) m_TeiGakuB = CDbl(0.013) Case 78 To 79 m_TeiRituB = CDbl(0.029) m_TeiGakuB = CDbl(0.013) Case 80 To 82 m_TeiRituB = CDbl(0.028) m_TeiGakuB = CDbl(0.013) Case 83 To 84 m_TeiRituB = CDbl(0.027) m_TeiGakuB = CDbl(0.012) Case 85 To 89 m_TeiRituB = CDbl(0.026) m_TeiGakuB = CDbl(0.012) Case Is = 90 m_TeiRituB = CDbl(0.025) m_TeiGakuB = CDbl(0.012) Case 91 To 93 m_TeiRituB = CDbl(0.025) m_TeiGakuB = CDbl(0.011) Case 94 To 96 m_TeiRituB = CDbl(0.024) m_TeiGakuB = CDbl(0.011) Case 97 To 99 m_TeiRituB = CDbl(0.023) m_TeiGakuB = CDbl(0.011) Case Is = 100 m_TeiRituB = CDbl(0.023) m_TeiGakuB = CDbl(0.01) Case Else m_TeiRituB = CDbl(0) m_TeiGakuB = CDbl(0) End Select End Sub Private Sub Class_Initialize() 'プロパティ初期化 m_TeiRituA = CDbl(0) m_TeiRituB = CDbl(0) m_TeiGakuA = CDbl(0) m_TeiGakuB = CDbl(0) m_Misyokyaku = CDbl(0) m_YearA = CDbl(0) m_YearB = CDbl(0) End Sub