ユーザーのユーザー名とパスワードを格納するために 2D 配列を使用しています。users
グローバル文字列配列として定義:
Dim users(9, 2) As String
そのアレイにユーザーを追加する方法は? ユーザー名とパスワードを一度に設定します。
ユーザーのユーザー名とパスワードを格納するために 2D 配列を使用しています。users
グローバル文字列配列として定義:
Dim users(9, 2) As String
そのアレイにユーザーを追加する方法は? ユーザー名とパスワードを一度に設定します。
明示的な境界を持つDim
配列ユーザーを取得したら、それはできませんReDim
。これを試すことができますが、コンパイルされません (配列は既に次元化されています)
Dim users(9, 2) As String
ReDim Preserve users(10, 2) ' doesn't compile!
ReDim Preserve
もう 1 つの問題は、配列の最初のインデックスを取得しようとすることです。あなたもそれを試すことができます。実行時エラーが発生します(下付き文字が範囲外です)
Dim users() As String
ReDim Preserve users(0, 1)
ReDim Preserve users(1, 1) ' runtime error!
代わりに、次のことを思いつきました。username
またはを区別するために、最初のインデックスを保持する必要がありますpassword
。これはサイズ 1 になります (2 ではありません)。ユーザーを追加すると、2 番目のインデックスが増加します。
Private Sub Form_Load()
Dim users() As String
ReDim users(1, 0)
Add users, "name1", "pw1"
Add users, "name2", "pw2"
End Sub
Private Sub Add(ByRef users() As String, username As String, password As String)
If Not (users(0, 0) = vbNullString And users(1, 0) = vbNullString) Then
ReDim Preserve users(1, UBound(users, 2) + 1)
End If
users(0, UBound(users, 2)) = username
users(1, UBound(users, 2)) = password
End Sub
ユーザー名とパスワードを交換できない場合は、コレクションなどの別のデータ構造、またはユーザー名とパスワードのフィールドを持つカスタム クラスの配列を調べることをお勧めします。
すべてのフィールドを含むユーザー定義型を作成する
Private Type UserData
strName As String
strPass As String
End Type
次に、そのユーザー定義型の配列を作成します
Dim udtUser() As UserData
ReDim udtUser(9) As UserData
With udtUser(9)
.strName = "captain hook"
.strPass = "parrotname"
End With 'udtUser(9)
ユーザーをループして、配列に値を直接割り当てます。
Dim cntr As Integer
For cntr = 0 To UBound(cntr) - 1
users(x, 0) = "username"
users(x, 1) = "password"
Next cntr