Dim u As Variant, v() As Variant
u = Range("A1:B3").Value
v = Range("A1:B3").Value
現在有u和v之間有什麼區別?如果不是,將v聲明爲變體數組而不是將其簡單地聲明爲變體是多餘的?
Dim u As Variant, v() As Variant
u = Range("A1:B3").Value
v = Range("A1:B3").Value
現在有u和v之間有什麼區別?如果不是,將v聲明爲變體數組而不是將其簡單地聲明爲變體是多餘的?
有差異。將Variant
想象成在您的計算機上處於較低級別並且具有應用程序編程接口(API)的VBA。這個低級別的東西是一個VARIANT
和Windows附帶幾個功能,可以讓你在很多語言中操作它; VBA就是其中之一。
v
是這樣的一個Visual Basic數組VARIANT
s,u
是一個單一的。
發現差異的一種方法是使用VarType(v)
,其計算結果爲vbArray + vbVariant
。 VarType(u)
評估爲vbEmpty
。您可以在分配到範圍內容之前對其進行測試。
在您的具體情況下,Excel-VBA在分配到v
時做了一些有趣的事情(我認爲沒有任何其他術語):它「知道」目標類型是一個數組,並執行稍微不同的強制。 u
和v
與設置爲Excel.Range
的值完全相同。
我沒有看到任何好處聲明它作爲一個變種數組。 – Rory 2014-12-02 13:38:57
你可以提出一個論點,即添加()是有用的,因爲它表明有關v的用法的* intent *,這有助於其他人閱讀你的代碼(或稍後對你) – 2014-12-03 01:10:29
我發現添加()是它試圖給它分配一個空數組時導致錯誤。例如,如果某個函數返回一個數組但數組爲空,那麼v = SomeFunction()將導致運行時錯誤,但u = SomeFunction()不會。 – 2014-12-17 13:17:09