Sub combinationSum() ar = Array(1, 2, 3) target = 4 Dim dp() ReDim dp(target + 1) dp(0) = 1 For i = 0 To target For j = 0 To UBound(ar) If i >= ar(j) Then dp(i) = dp(i) + dp(i - ar(j)) End If Next Next res = dp(target) End Sub