0

配列を作成して処理するVBAサブがあります。

Option Base 1
Public myArr(20, 10) As Variant

Sub Stackoverflow()
Dim x, y As Integer
    'Put some values to array (only in the first 15 rows)
    For x = 1 To 15
        For y = 1 To 10
            myArr(x, y) = (x * y + 8)
        Next y
    Next x
End Sub

次に、配列myArrを処理できるコマンドボタンを備えたユーザーフォームがあります。

Private Sub commandbutton_Click()
Dim a, b As Integer
    'Put some other values in the remaining rows
    For a = 16 To 20
        For b = 1 To 10
            myArr(a, b) = (a * b + 3)
        Next b
    Next a
End Sub

配列をユーザーフォームに渡すにはどうすればよいですか?そして、Subは更新された配列をどのように表示できますか?ありがとう

4

2 に答える 2

0

私がそれを完了した後、あなたのコードは私にとって完璧に機能しました。私はあなたがユーザーフォームを呼び出す方法を知らないと仮定することができるだけです。

Stackoverflow()変更せずにモジュールにコピーしました。

私が追加した同じモジュールに:

Sub Main()

  Dim RowMyArr As Long
  Dim ColMyArr As Long

  Load UserForm1

  Call Stackoverflow

  UserForm1.Show

  Debug.Print "    ";
  For ColMyArr = LBound(myArr, 1) To UBound(myArr, 1)
    Debug.Print Right("   " & ColMyArr, 4) & " ";
  Next
  Debug.Print

  For RowMyArr = LBound(myArr, 2) To UBound(myArr, 2)
    Debug.Print Right("  " & RowMyArr, 3) & " ";
    For ColMyArr = LBound(myArr, 1) To UBound(myArr, 1)
      Debug.Print Right("   " & myArr(ColMyArr, RowMyArr), 4) & " ";
    Next
    Debug.Print
  Next

End Sub

ユーザーフォームを作成しましたが、デフォルト名をUserForm1から変更しませんでした。ボタンを追加して名前を付けcommandbutton、コードをフォームのコード領域にコピーしました。の前に、フォームを閉じて終了するようEnd Subに追加しました。Unload UserForm1

Mainを実行すると、次がイミディエイトウィンドウに出力されました。

       1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20 
  1    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   19   20   21   22   23 
  2   10   12   14   16   18   20   22   24   26   28   30   32   34   36   38   35   37   39   41   43 
  3   11   14   17   20   23   26   29   32   35   38   41   44   47   50   53   51   54   57   60   63 
  4   12   16   20   24   28   32   36   40   44   48   52   56   60   64   68   67   71   75   79   83 
  5   13   18   23   28   33   38   43   48   53   58   63   68   73   78   83   83   88   93   98  103 
  6   14   20   26   32   38   44   50   56   62   68   74   80   86   92   98   99  105  111  117  123 
  7   15   22   29   36   43   50   57   64   71   78   85   92   99  106  113  115  122  129  136  143 
  8   16   24   32   40   48   56   64   72   80   88   96  104  112  120  128  131  139  147  155  163 
  9   17   26   35   44   53   62   71   80   89   98  107  116  125  134  143  147  156  165  174  183 
 10   18   28   38   48   58   68   78   88   98  108  118  128  138  148  158  163  173  183  193  203 

値は確認していませんが、正しいと思います。

于 2012-02-02T09:54:06.553 に答える
-1

そのパブリック配列は、アプリケーションの任意のフォームからアクセスできます。。。なぜとにかくそれを渡す必要がありますか?これは、アクセスvbaのフォームにパラメーターを渡す方法を説明しています。

MSAccessのフォーム間でパラメータを渡す

于 2012-02-02T10:56:05.327 に答える