コンパイルエラーの部分は無視して、
ステップ実行で流れを確認しているのですが、MyVariable1に進めないです。変数に値が入らないです。
これについて共通変数についての理解をもう一度確認してください。
'共通変数 標準モジュール
Public MyVariable1 As Variant
Public MyVariable2 As Variant
Public MyVariable3 As Variant
メインフォーム
'共通変数
Dim MyVriable1 As Variant
Dim MyVriable2 As Variant
Dim MyVriable3 As Variant
標準モジュールとメインフォームで同じ名前の変数を宣言していますが、
これによって格納されている値を共有できると勘違いしてませんか。
名前が同じでもこの変数は全く別物ですので値を共有しているわけではありません。
メインフォームで MyVriable1 に1を代入しても、メインフォーム内の変数 MyVriable1 に代入されるだけで、標準モジュールの MyVariable1 には何の変化もありません。
メインフォームの方の変数を削除してください。
そうすれば、標準モジュールの変数は Public で宣言しているので、メインフォームの方から参照可能になり、MyVariable1 に代入できるようになります。
Public宣言してない変数は、そのモジュール内でしか参照できません。
「VBA 変数 スコープ」をキーワードにWEB検索して解説ページで学習してください。
共通変数はいつでも、どこでも、だれでも使用できるので便利ではありますが、その分、コードが読みづらくなりますし、バグの原因になりやすいので、できれば避けたいです。
共通変数以外で、別モジュール間でデータをやりとりする方法は、
引数でデータを渡す、戻り値で結果を受け取る、という方法があります。
こちらの方法も学習して理解されることをお勧めします。
この方法の簡単なサンプルを提示しておきます。
'標準モジュール
Option Compare Database
Option Explicit
Public Function MyFunction(MyVariable1 As Variant) As Variant
MsgBox MyVariable1 & "を受け取りました。"
MyFunction = 2
End Function
'フォームモジュール
Private Sub Cmd新規登録_Click()
Dim 結果 As Variant
結果 = MyFunction(1)
MsgBox "結果は" & 結果 & "です"
End Sub
これで共通変数なしでデータのやり取りができます。
データがどのように移動しているか読みやすいし、知らない間に変数の中身が変更されというような不安もなくなります。
「VBA 引数 戻り値」などをキーワードにWEB検索して学習されることをお勧めします。