If文についてちょっと思うところがあったので…

If A and B Then

など

If A or B Then

など見る際にデバックの時変数が追いづらいので

戻り値関数に引数を当てて

Function IsA(a , b) as boolean

if not a then
return false
End If

if not b then
return false
End If

return true
End Function

条件の判定をAndやOrでまとめずに
一個一個条件を判別出来る様にした方が条件分岐が多岐に分岐せず
わかりやすいかと思います。

なんか反論とかたくさん来そうでは思いますが…