オーバーフローを起こさずにint/Integer同士の積を求めたい場合、BigMulメソッドを用いることができます。 このメソッドは二つのint/Integerを引数にとり、それらの積をlong/Long型で返します。

Math.BigMulメソッドを使ってオーバーフローを起こさずに32ビット整数同士の積を求める
Imports System

Class Sample
  Shared Sub Main()
    Dim a As Integer = Integer.MaxValue
    Dim b As Integer = 2

    Console.WriteLine("{0} * {1} = {2}", a, b, Math.BigMul(a, b))

    ' 同じ値の積を*演算子で求めるとオーバーフローとなる
    Console.WriteLine("{0} * {1} = {2}", a, b, a * b)
  End Sub
End Class
オーバーフローのチェックを有効にしている場合
2147483647 * 2 = 4294967294

ハンドルされていない例外: System.OverflowException: 算術演算の結果オーバーフローが発生しました。
   場所 Sample.Main()
オーバーフローのチェックを無効にしている場合
2147483647 * 2 = 4294967294
2147483647 * 2 = -2

オーバーフローのチェックの有効/無効の切り替えやその際の動作の違いなどについては整数型のオーバーフローとチェックを参照してください。