あ、第28段がうぷされてる。ただいま階拝見中...

おっ、名前付けをちゃんとしたんだね、なかなかみやすくなったんじゃないかな?
おおぅ、ブロックをモジュール化したんですね。
よく見てないんですが、いいんじゃないですか。

気になった点をいくつか、Form_Initializeの
   'ここにループを書くとウインドウ描画前に始まってしまうので、
   'タイマー使用
   TmrCallMain.Enabled = True
は画面が表示されずにMainLoopに入ってしまうんでやってるんだと思うんだけど
その場合は、Initializeでフォームを Show して DoEvents かませば大丈夫です。
   Me.Show
   DoEvents
   MainLoop
とこんな感じで書けばいけると思う。

あとは重複して書いてるところが多い。
   With tmpRect
      .Bottom = 220
      .Left = 250
      .Right = 310
      .Top = 140
   End With
これはいっぱいあるんで、
tmpRect = MakeRect( 220,250,310,140 )
とこんな感じのRECTを作る関数を作った方が良いです。
小さい物でもいっぱいあると曲者です。

後はある特定のボタンが押されているときの速度を
変える処理はこんな風に書けばよいです。

   Dim MoveSpeed As Long
   MovdSpeed = 2                   '通常移動速度
   If Press.Shift Then MoveSpeed = MoveSpeed * 2   'SHIFTが押されているときは2倍
   ElseIf Press.Ctrl Then MoveSpeed = MoveSpeed * 3 'CTRL が押されているときは3倍

   If Press.Left Then
     Paddle.X = Paddle.X - MovdSpeed        'この辺を変数に変えてみた
     If Paddle.X < 0 Then Paddle.X = 0
   ElseIf Press.Right Then
     Paddle.X = Paddle.X + MovdSpeed        'この辺を変数に変えてみた
     If Paddle.X + Paddle_width >= Game_area Then Paddle.X = Game_area - Paddle_width
   End If

重複する処理は書いてはいけない、修正や変更が大変になります。
ちょっとづつ値が違うような処理は変数をうまく使えばひとつにまとめられます。
似たような構文が続くものは必ずうまく書く方法があるのでそこに注意してみてください。

あと、実行させると自機が自動で左に移動します。
カーソルきかないっす。仕様ですか(笑。