読者です 読者をやめる 読者になる 読者になる

夢見る税理士の独立開業繁盛記

神戸市東灘区で開業している駆け出し税理士の、試行錯誤日記

プログラムで条件分岐は意外と面倒

先週あたりから少しはまり気味で、すきま時間でちょこちょこといじっている、エクセルの給与計算シート。
今晩は、扶養控除申告書情報の入力画面を作ってみました。


生年月日や所得額を入れると、控除額が自動で計算されるようにしてみました。
普段はシートのセルと関数を使って条件分岐をさせることがほとんどなので、あまり考えたことがなかったのですが、プログラムだけで条件分岐させるのは結構面倒なのですね。
上記のような配偶者控除額と障害者控除額と配偶者特別控除額を計算させるだけで、次のような長いものになってしまいます(もっと上手い書き方があるのかもしれませんが・・・)。

TextHaishotoku = Format(TextHaishotoku, "#,###")
'配偶者控除の判定
Dim kojogaku As Long
Dim shotoku As Long
Dim nenrei As Integer

shotoku = Val(Replace(TextHaishotoku.Value, ",", ""))
nenrei = Val(TextHainenrei.Value)

'配偶者控除配偶者特別控除の判定
If shotoku <= 380000 Then
'配偶者控除額の判定
If nenrei >= 70 Then
kojogaku = 480000
Else
kojogaku = 380000
End If

'配偶者控除額欄への代入、配偶者特別控除額のクリア
TextHaikojo.Value = kojogaku
TextHaikojo = Format(TextHaikojo, "#,###")
TextHaitokukojo.Value = 0

Else

'配偶者特別控除額の判定
If CheckHonninshotoku.Value = True Then
kojogaku = 0
ElseIf shotoku >= 760000 Then
kojogaku = 0
ElseIf shotoku >= 750000 Then
kojogaku = 30000
ElseIf shotoku >= 700000 Then
kojogaku = 60000
ElseIf shotoku >= 650000 Then
kojogaku = 110000
ElseIf shotoku >= 600000 Then
kojogaku = 160000
ElseIf shotoku >= 550000 Then
kojogaku = 210000
ElseIf shotoku >= 500000 Then
kojogaku = 260000
ElseIf shotoku >= 450000 Then
kojogaku = 310000
ElseIf shotoku >= 400000 Then
kojogaku = 360000
Else: kojogaku = 380000
End If

'配偶者特別控除額欄への代入、配偶者控除額のクリア
TextHaitokukojo.Value = kojogaku
TextHaitokukojo = Format(TextHaitokukojo, "#,###")
TextHaikojo.Value = 0

End If

Dim haikojo As Long

'ComboBoxの値 が変化した時の処理
Dim si As Integer
With NenchoEntry

si = .ComboHaishogai.ListIndex ' ComboBox の何番目が選択されたかを得る
Select Case si
Case 0
' 0番(非該当)が選択されていたらテキストボックスを0円にする
.TextHaishokojo.Value = 0
Case 1
' 1番(特別障害者)が選択されていたらテキストボックスを400,000円にする
.TextHaishokojo.Value = 400000

Case 2
' 2番(同居特別障害者)が選択されていたらテキストボックスを750,000円にする
.TextHaishokojo.Value = 750000

Case 3
' 3番(その他障害者)が選択されていたらテキストボックスを270,000円にする
.TextHaishokojo.Value = 270000


End Select
End With
haikojo = Val(Replace(TextHaishotoku.Value, ",", ""))
If haikojo > 380000 Then
TextHaishokojo.Value = 0
End If
End Sub

これだけでも、自分で何を書いているのか段々分らなくなってきます(^^;。
本職のプログラマーさんは、やはりすごいです。


神戸市東灘区御影の会計事務所 小林敬幸税理士事務所です