我正在嘗試使用分配的陣列更新文本框值。看來我可以更新“專案”本身但不能更新物件?有人對如何更好地解決這個問題有一些指示嗎?
這就是我到目前為止所擁有的。我也不確定如何將物件正確設定為陣列。
Dim spcList(1 To 3) As Integer
Dim item As Variant
spcList(1) = Me.txt1.Value
spcList(2) = Me.txt2.Value
spcList(3) = Me.txt3.Value
' Spacing Error Handling
For Each item In spcList:
item = 0.875
Debug.Print item
Next
uj5u.com熱心網友回復:
我的 VBA 已經生銹了,但我相信為此目的,事情的作業方式與 VB.Net 中的作業方式幾乎相同,我更了解它。免責宣告,讓我們繼續。
如果你想替換陣列中的值,就像問題中的代碼試圖做的那樣,無論是整數還是更復雜的東西,比如參考,你必須使用傳統的For
回圈:
Dim i As Integer
For i = 1 To 3
spcList(i) = 0.875
Next
這是因為For Each
陳述句中的回圈變數從集合中獲取值的副本。因此,對于像這里這樣的整數,原始代碼只會分配變數中保存的副本。
為了擴展正在發生的事情并希望加深您對語言的理解,讓我們還看看原始代碼將如何處理參考型別。在這種情況下,回圈變數仍然得到一個副本,但不是整個物件:只有參考。這是有效的,因為副本仍然參考記憶體中的同一個物件。
因此,將新的物件參考分配給回圈變數將與更簡單的 Integer 型別具有相同的結果,并且陣列中的物件參考不會改變,因為我們只是替換了副本。但是,如果您要在回圈變數上呼叫方法,或分配給物件的屬性,這些事情會更符合您的預期,因為(再次)回圈變數中的復制參考仍然參考相同的物件記憶體,因此您正在對該物件的狀態進行操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/480548.html
上一篇:從.env檔案匯入路徑時,我在路徑變數的任何地方都添加了兩個額外的括號?
下一篇:如何回傳到VBA的上一個作業表?