コンピュータでは、普通小数点以下のある数字を扱うとき2進数の浮動小数点数を使います。
2進数では10進数の小数を正確に表すことが出来ません。
そのため、プログラムで0.3の計算をしても10進→2進の変換過程で誤差を生じる為
実際には 0.29999999999999 というような値になってしまいます。
ですから、(0.3 * 10) >= 3 が真にならないのです。
小数以下の10進数を扱うときは Currency とか Decimal なんてのを使います。
Option Explicit
Sub test()
Dim i As Long
Dim t As Currency
For i = 1 To 5
t = i / 10 + 2 '小数点プラス2
If (t - Int(t)) * 10 >= 3 Then
t = Int(t) + 1 '3以上なら1を追加
Debug.Print i; "-"; t
Else
t = Int(t) '2以下なら、整数部分を表示
Debug.Print i; "-"; t
End If
t = 0
Next i
End Sub