我有一個訪問表單,其中重復了一堆部分,例如:姓名、年齡、性別。這些文本框的變數名稱是:Name1、Name2、...;年齡1,年齡2,...;等等。
我想在按下按鈕后將所有這些值存盤在一個陣列中。我沒有對所有變數名進行硬編碼,而是想知道是否有辦法在 for 回圈中回圈這些變數名,例如:
For i = 1 to 4
ArrayName(i) = ("Name" & i).value
ArrayAge(i) = ("Age" & i).value
ArrayGender(i) = ("Gender" & i).value
next i
我可以通過 ("Name" & i) 獲取字串 Name1 但是當我在它之后添加 .value 時,它??似乎不起作用。
我還嘗試將變數名稱作為字串存盤到另一個陣列中,然后嘗試使用該陣列元素來獲取值,但這也不起作用。
uj5u.com熱心網友回復:
錯誤是因為代碼只是構建一個字串“Name1”,而字串沒有 Value 屬性。考慮:
Me.Controls("Name" & i).Value
或簡化為:
Me("Name" & i)
值是默認屬性,因此不必參考。但是,Me 限定符很重要,否則陣列將只填充控制元件的名稱“Name1”,而不是控制元件的值。
默認情況下,陣列是 0-base,這意味著元素索引從 0 開始,因此迭代 1 到 4 來參考陣列元素將不會提供正確的結果。考慮:
ArrayName(i - 1) = Me("Name" & i)
否則,Option Base 1在模塊頭中將陣列宣告為 1-base。
代替 3 個 1 維陣列,可以使用一個 2 維陣列。
Dim aryD(4, 3) As Variant, x As Integer, y As Integer
For x = 1 To 4
For y = 1 To 3
aryD(x - 1, y - 1) = Me(Choose(y, "Name", "Age", "Gender") & x)
Next
'verify array elements values
Debug.Print aryD(x - 1, 0) & " : " & aryD(x - 1, 1) & " : " & aryD(x - 1, 2)
Next
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/411702.html
標籤:
