標題:
[發問]
如何用迴圈的i呼叫變數
[打印本頁]
作者:
PKKO
時間:
2015-1-14 02:00
標題:
如何用迴圈的i呼叫變數
我有一個程式碼,會需要重複使用
但裡面的文字敘述需要更改
因此我先將文字定義為
s1_1="我愛你"
s1_2="我不愛你"
s2_1="我想你"
s2_2="我不想你"
我的目的是希望簡略使用程式碼
我可以if i = 1 then s1 =s1_1.....但若是我的i就有一千個我會打死
因此是否可以如下使用
把變數與i合併使用,就快多了
For i = 1 To 2
s1 = "s1_" & i
s2 = "s2_" & i
Call check列出檔案
Next
複製代碼
當然目前上述程式碼是不能使用的因為s1會="s1_1"而不是等於"我愛你"
我只知道userform可以這樣使用例如set ctrl=controls("s" & i)
但不是userform的控制項,而是變數要如何達到我上述程式碼真的要達成的結果呢?
作者:
准提部林
時間:
2015-1-17 11:48
以下只是示例:
Dim SR(1 to 2, 1 to 99)
SR(1,1)="我愛你"
SR(1,2)="我不愛你"
SR(2,1)="我想你"
SR(2,2)="我不想你"
For i = 1 To 2
s1 = SR(1,i)
s2 = SR(2,i)
Call check列出檔案
Next
一千個細項,可使用工作表列出明細對照。
作者:
rbktwi
時間:
2015-1-17 12:39
請教Dim SR(1 to 2, 1 to 99)是多重陣列用法?
作者:
PKKO
時間:
2015-1-17 21:03
回復
2#
准提部林
感謝回復,平常只有想到用陣列帶入資料,沒有想過把變數的值帶入陣列,再由迴圈把陣列內容帶出來
雖然多一道工,不過仍然可完成需求! 感恩!
作者:
diolin
時間:
2015-1-20 16:44
也可以用 Collection, 不用宣告很大的 Array, 也不用動態宣告Array
作者:
PKKO
時間:
2015-1-20 22:32
本帖最後由 PKKO 於 2015-1-20 22:33 編輯
回復
5#
diolin
感謝,又收穫了!
PO上範例說明
Collection 物件範例
本範例建立一個命名為 MyClasses 的 Collection,並且再建立一個對話方塊,讓使用者可從對話方塊中將物件新增到該集合物件中。若要觀察程式如何運作,請先在「插入」功能表上選取「物件類別模組」指令,然後在 Class1 的模組層次中宣告一個公用變數,命名為 InstanceName (Public InstanceName),此變數用來儲存每個物件類別執行個體的名稱。不要更改物件類別的預設名稱 Class1。將下列程式碼複製到另一個模組的「一般」區段中,然後在另一個程序中以 ClassNamer 陳述式來啟動之。(本範例只適用於有支援物件類別的主程式。)
Sub ClassNamer()
Dim MyClasses As New Collection ' 建立一個集合物件 (Collection)。
Dim Num ' 記數用變數,用來記數物件個數。
Dim Msg As String ' 提示訊息用變數。
Dim TheName, MyObject, NameList ' 物件資訊用變數。
Do
Dim Inst As New Class1 ' 建立 Class1 的新執行個體。
Num = Num + 1 ' 把記數變數 Num 加一,然後要求使用者輸入新物件個體的名稱。
Msg = "Please enter a name for this object." & Chr(13) _
& "Press Cancel to see names in collection."
TheName = InputBox(Msg, "Name the Collection Items")
Inst.InstanceName = TheName ' 將名稱指定給新物件個體。
' 將使用者輸入的名稱加到集合物件中。
If Inst.InstanceName <> "" Then
' 將新名稱加到集合物件中。
MyClasses.Add item := Inst, key := CStr(Num)
End If
' 將現在物件的引用釋放掉,以對下一個物件做動作。
Set Inst = Nothing
Loop Until TheName = ""
For Each MyObject In MyClasses ' 建立物件名稱清單。
NameList = NameList & MyObject.InstanceName & Chr(13)
Next MyObject
' 將名稱清單以訊息方塊顯示出來。
MsgBox NameList, , "Instance Names In MyClasses Collection"
For Num = 1 To MyClasses.Count ' 將各物件從集合物件中移除。
MyClasses.Remove 1 ' 因為每移除一個物件後,集合物件
' 本身會自動重排物件順序,故迴圈中只需要移除第一個
Next ' 物件即可。
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)