現状では、ボールがブロックの側面に当たっても、ボールは下向きに跳ね返ります。
しかしこの動きは不自然です。
ボールがブロックの側面に当たったときは、両側の壁に当たった時と同じようにx軸方向に跳ね返り、縦方向の動きは変わらないほうが自然です。
この動きを作ってみましょう。
ボールがブロックの側面に当たったかどうかは、ボールがブロックと当たった瞬間の重なり部分の形状で判断できます。

ボールがブロックの上の面または下の面に当たると、重なり部分は横長の四角形になります。これに対して、ボールがブロックの側面に当たると、重なり部分は縦長の四角形になります。
重なり部分の四角形は、Rectangleが持っているIntersects関数で取得できます。
重なり部分の四角形の幅と高さを比較して、幅が大きければ上の面または下の面、高さが大きければ側面に当たったと判断できます。
Public Sub HitBlock()
Dim i, j As Integer
Dim r, br As Rectangle
Dim b As Label
br = New Rectangle(x, y, Ball.Width, Ball.Height)
For i = 0 To 9
For j = 0 To 5
b = block(i, j)
r = New Rectangle(b.Left, b.Top, b.Width, b.Height)
If b.Visible = True And r.IntersectsWith(br) Then
Dim overlap As Rectangle
overlap = Rectangle.Intersect(r, br)
If overlap.Width > overlap.Height Then
dy = -dy
Else
dx = -dx
End If
b.Visible = False
score += 1
Exit Sub
End If
Next
Next
End Sub