Notes for
http://www.snb-vba.eu/VBA_Arrays_en.html
http://www.excelfox.com/forum/showth...0174#post10174 https://www.excelforum.com/the-water...ml#post4613906
Code:Sub snbsVarTypeTypeName() ' http://www.snb-vba.eu/VBA_Arrays_en.html http://www.excelfox.com/forum/showthread.php/2157-Re-Defining-multiple-variables-in-VBA?p=10174#post10174 https://www.excelforum.com/the-water-cooler/1174400-would-like-to-know-about-the-forum-experts-gurus-4.html#post4613906 a_sn = Array(1, 2, 3, 4) a_sp = Split("1,2,3,45", ",") a_sq = Range("A1:F5") ' defaluts to Range("A1:F5").Value ' .Value Property returns a Field ( Arrray ) of Variant Member Elements Dim a_st As Shape: x = VarType(a_st) ' 9 ( Object ) Rem 2 VarType Constants https://msdn.microsoft.com/en-us/library/office/gg251422.aspx Dim VrTpe As Long '2a) Variant Variables: You can determine how the data in a Variant is treated.. Dim Var As Variant: VrTpe = VarType(Var) ' 0 vbEmpty Uninitialized (default) Dim VarDef: Let VrTpe = VarType(VarDef) ' 0 Let Range("A25:A26").Value2 = "Some text" ' .Value2 gives you the underlying value of the cell (could be empty, string, error, number (double) or boolean) ' .Value gives you the same as .Value2 except if the cell was formatted as currency or date it gives you a VBA currency (which may truncate decimal places) or VBA date. Let Var = Range("A25:A26").Text ' "Some text" given to Variant attempts to coerce to a String and will fail if the underlying Variant is not coercable to a String type Let Range("A26").Value = "Some other text" ' .Value gives you the same as .Value2 except if the cell was formatted as currency or date it gives you a VBA currency (which may truncate decimal places) or VBA date. Let Var = Range("A25:A26").Text ' The data is invalid, a Null is given to Variant Let VrTpe = VarType(Var) ' 1 Contains no valid data Dim arrVar(1 To 1) As Variant Let VrTpe = VarType(arrVar()) '2b) Normal Variables Dim Intr As Integer: VrTpe = VarType(Intr) ' 2 Dim Lng As Long: VrTpe = VarType(Lng) ' 3 Dim Sngle As Single: VrTpe = VarType(Sngle) ' 4 Dim Dble As Double: VrTpe = VarType(Dble) ' 5 Dim Str As String: VrTpe = VarType(Str) ' 8 Dim Obj As Object: VrTpe = VarType(Obj) ' 9 VrTpe = VarType(a_sn) ' 8204 = 8192 (array) + 12 (Variant) VrTpe = VarType(a_sp) ' 8200 = 8192 (array) + 8 (String) VrTpe = VarType(a_sq) ' 8204 = 8192 (array) + 12 (Variant) ' a_sq defaults to a_sq.Value, or rather the = string refs to cells which returns a a Field ( Arrray ) of Variant Member Elements VrTpe = VarType(a_st) ' 9 (object) Dim a_bt(1 To 1) As Byte Let VrTpe = VarType(a_bt()) ' 8209 = 8192 (array) + 17 (Byte) Dim Rnga_sq As Range: Set Rnga_sq = Range("A1:F5") Let VrTpe = VarType(Rnga_sq) ' 8204 = 8192 (array) + 12 (Variant (used only for arrays of Variants)) !!!! VarType interprets a Range as an array. ??????? End Sub Sub TextValueValue2() ' https://fastexcel.wordpress.com/2011/11/30/text-vs-value-vs-value2-slow-text-and-how-to-avoid-it/ http://stackoverflow.com/questions/17359835/what-is-the-difference-between-text-value-and-value2 Set c = Range("A27") c.Value = 1198.3 c.NumberFormat = "$#,##0_);($#,##0)" MsgBox c.Value MsgBox c.Text MsgBox c.Value2 End Sub Sub M_snb() sn = Array(String(300, "p"), String(700, "p"), Space(500)) Dim v MsgBox Len(sn(0)) & vbLf & Len(sn(1)) & vbLf & Len(sn(2)) End Sub
Using Excel 2007 32 bit
Worksheet: EmptiesVariables
https://msdn.microsoft.com/en-us/lib.../gg251422.aspx Normal Variable 0vbEmpty Uninitialized Array Variable 8192Array ( Member elements Empty ) Normal Variable 1If data is invalid, a Null is given to Variant Array Variable 8193Null Normal Variable 2Integer 6Currency 11Boolean Array Variable 8192+2=8194 8198 8203Normal Variable 3Long 7Date 12------- Array Variable 8195 8199 8204Variant (used only for arrays of variants) Normal Variable 4Single 8String 17Byte Array Variable 8196 8200 8146Normal Variable 5Double 9Object 36UserDefined Array Variable 8197 8201 8228Normal Variable 6Currency Array Variable 8198Normal Variable 7Date Array Variable 8199Normal Variable 8String Array Variable 8200Normal Variable 9Object Array Variable 8201Normal Variable 10Error Array Variable 8202Normal Variable 11Boolean Array Variable 8203Normal Variable 12------- Array Variable 8204Variant (used only for arrays of variants) Normal Variable 17Byte Array Variable 8209Normal Variable 36UserDefined Array Variable 8228




Reply With Quote
Bookmarks