Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.23 KB | None | 0 0
  1. 1 2 3
  2. 4 5 6
  3. 7 8 9
  4.  
  5. MyArray(2,1 : 2,3) = 13
  6.  
  7. Range("A1:C3") = MyArray: Range("A1,B2,C1,B3") = 11: MyArray = Range("A1:C3")
  8.  
  9. Range("A1:C3") = MyArray: Range("A2:C2") = 13: MyArray = Range("A1:C3")
  10.  
  11. Dim MyArray() As Variant
  12.  
  13. Public Function MyArrayOut() As Variant
  14. MyArrayOut = MyArray
  15. End Function
  16.  
  17. Sub testing()
  18. 'we are using a 5x4 (4 columns / 5 rows) array
  19. ReDim MyArray(0 To 4, 0 To 3) As Variant 'also 1 to 5 and 1 to 4 are possible.... doesn't matter
  20.  
  21. Dim i As Long, j As Long 'input some numbers
  22. For i = 0 To 4
  23. For j = 0 To 3
  24. MyArray(i, j) = i + 5 * j + 1
  25. Next
  26. Next
  27.  
  28. [A1:D5].Value2 = MyArray
  29. Stop ' check the sheet -> should be 1 to 20
  30.  
  31. 'lets add 11 to the second row
  32. MyArray = Evaluate("=IF({0;1;0;0;0},MyArrayOut()+11,MyArrayOut())")
  33.  
  34. [A1:D5].Value2 = MyArray
  35. Stop ' check again. row 2 should be 13, 18, 23, 28
  36.  
  37. 'set only 1,1 ; 2,2 ; 4,2 and 5,4 to 0. just keep in mind that using math will fail if ANY value is not numeric (or empty)
  38. MyArray = Evaluate("=MyArrayOut()*{0,1,1,1;1,0,1,1;1,1,1,1;1,0,1,1;1,1,1,0}")
  39.  
  40. [A1:D5].Value2 = MyArray
  41. Stop 'A1, B2, B4, D5 all should be 0
  42.  
  43. 'set column 3 to "abc"
  44.  
  45. MyArray = Evaluate("=IF({0,0,1,0},""abc"",MyArrayOut())")
  46.  
  47. [A1:D5].Value2 = MyArray
  48. Stop ' check again. column C should be just abc
  49.  
  50. End Sub
  51.  
  52. Public Sub multiSetSame(ByRef arr As Variant, ByVal val As Variant, ParamArray str() As Variant)
  53. Dim runner As Variant
  54. For Each runner In str
  55. arr(Split(runner, ",")(0), Split(runner, ",")(1)) = val
  56. Next
  57. End Sub
  58.  
  59. Sub test()
  60. Dim MyArray(1 To 3, 1 To 4) As Long
  61.  
  62. multiSetSame MyArray, 11, "1,1", "2,2", "1,3", "3,2"
  63.  
  64. [A1:D3].Value2 = MyArray
  65. End Sub
  66.  
  67. MyArray = array(_
  68. array(1, 2, 3),_
  69. array(4, 5, 6),_
  70. array(7, 8, 9)_
  71. )
  72.  
  73. Wscript.echo MyArray(0)(0) '1'
  74. Wscript.echo MyArray(2)(2) '9'
  75.  
  76. SetArray(MyArray, patternStr, value)
  77.  
  78. SetArray(MyArray, "1,1 2,2 1,3 3,2", 11)
  79.  
  80. Set aw = New MyArrayWrapper
  81. MyArrayWrapper.array = MyArray
  82.  
  83. aw.SetArray("1,1 2,2 1,3 3,2", 11)
  84. aw.SetArray("r1 c2", 12)
  85.  
  86. MyArray = Array( [{1, 2, 3}], [{4, 5, 6}], [{7, 8, 9}] )
  87. MyArray(0)(1) = 11
  88. MyArray(1) = [Column(A1:A3)*0+13] ' changes a whole "row" to 13
  89. MyArray(2) = MyArray(1) ' copies one row to another
  90.  
  91. Dim MyArray(2,2)
  92.  
  93. MyArray(0,0) = 1
  94. MyArray(0,1) = 2
  95. MyArray(0,2) = 3
  96. MyArray(1,0) = 4
  97. MyArray(1,1) = 5
  98. MyArray(1,2) = 6
  99. MyArray(2,0) = 7
  100. MyArray(2,1) = 8
  101. MyArray(2,2) = 9
  102.  
  103. Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
  104. lpvDest As Any, _
  105. lpvSource As Any, _
  106. ByVal cbCopy As Long)
  107.  
  108. Sub test()
  109. 'assign a 2D array using the [] shorthand syntax for Eval
  110. myArray = [{1,2,3;4,5,6;7,8,9}]
  111.  
  112. 'Change an individual value
  113. myArray(1, 2) = 11
  114.  
  115. 'Change the entire first row (this ONLY works for the first row)
  116. 'Using a 1-based array assigned with []/Eval
  117. colarray = [{14,15,16}]
  118. CopyMemory myArray(1, 1), colarray(1), (UBound(colarray, 1) - LBound(colarray, 1) + 1) * 16 ' changes a whole "column"
  119.  
  120. 'Change the entire first row (this ONLY works for the first row)
  121. 'Using a 0-based array assigned with Array()
  122. colarray = Array(17, 18, 19)
  123. CopyMemory myArray(1, 1), colarray(LBound(colarray, 1)), (UBound(colarray, 1) - LBound(colarray, 1) + 1) * 16 ' changes a whole "column"
  124.  
  125. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement