Code:
| Row\Col |
I |
J |
K |
22 |
A |
- |
1 |
23 |
B |
- |
2 |
24 |
C |
- |
3 |
Sub EvalRep1() '
10 Dim strEval As String
20 Let strEval = "=REPT({""A"";""B""},2)": Debug.Print strEval ' Ctrl + g gives: =REPT({"A";"B"},2) which is what we would write in a cell
30 Dim vTemp As Variant 'Choose Variant as we may get a single value or Array from Evaluate
40 Let vTemp = Evaluate(strEval) 'Returns "AA"
50 Let vTemp = Evaluate("=REPT({""A"";""B""},2)") 'Returns "AA"
60 Let strEval = "=REPT(I22:I23,2)" 'Returns "AA"
70 Let vTemp = Evaluate(strEval) 'Returns "AA"
80 Let vTemp = Evaluate("=REPT(I22:I23,2)") 'Returns "AA"
90 Let vTemp = Evaluate(strEval) 'Returns "AA"
100 ' A few strings for evaluate Preliminary: repeted in next code '_- results given by Evaluate(strEval)
110 Let strEval = "={" & """""" & ";" & """""" & "}" & "&" & "REPT(I22:I23,2)": Debug.Print strEval ' ={"";""}&REPT(I22:I23,2)
120 Let vTemp = Evaluate(strEval) '_- Just first value, "AA" returned ' A null string is being concatenated.
130 Let strEval = "=M40:M41" & "&" & "REPT(I22:I23,2)": Debug.Print strEval ' =M40:M41&REPT(I22:I23,2)
140 Let vTemp = Evaluate(strEval) '_- Just first value, AA returned ' A null string is being concatenated.
150 Let strEval = "=If(row(),M40:M41)" & "&" & "REPT(I22:I23,2)": Debug.Print strEval '=If(row(),M40:M41)&REPT(I22:I23,2)
160 Let vTemp = Evaluate(strEval) '_- returns "0AA" = {0;0} & {AA;BB} but only rule of a single value ??
170 Let strEval = "=If(row(),M40:M41)" & "&" & "If(row(),REPT(I22:I23,2))": Debug.Print strEval '=If(row(),M40:M41)&If(row(),REPT(I22:I23,2))
180 Let vTemp = Evaluate(strEval) '?? Ahh '_- returns 1 "column" 2 "row" array ' {0AA;0BB} It is doing the evaluation of range Object and getting values from the Function
190 Let strEval = "=If(row(),M40:M41)": Debug.Print strEval ' =If(row(),M40:M41)
200 Let vTemp = Evaluate(strEval) '_- returns 1 "column" 2 "row" array ' {0;0} It is doing the evaluation
210 Let strEval = "=M40:M41": Debug.Print strEval ' =M40:M41
220 Let vTemp = Evaluate(strEval) '_- returns 1 "column" 2 "row" array ' {Empty;Empty} value from Range object
230 Let strEval = "M40:M41": Debug.Print strEval ' M40:M41
240 Let vTemp = Evaluate(strEval) '_- returns 1 "column" 2 "row" array ' {Empty;Empty} value from Range object
250
260 ' '_- Asside: Range referencing in a cell, Range object referencing in a Ex cell, Excel is doing that., Evaluating it as such, Externally referencing a cell such, Cel, cel as a Range object is External to the cel, sort of Ex cel, or Excel ' the fundamental idea of a Excel "holding" a cell, through a string reference, as a Range object http://www.excelforum.com/development-testing-forum/1154829-collection-stuff-of-codes-for-other-threads-no-reply-needed-14.html#post4595462 http://www.eileenslounge.com/viewtopic.php?f=30&t=25213&p=202227#p202227
270 Let strEval = "='[" & ThisWorkbook.Name & "]" & ThisWorkbook.Worksheets("XLORX").Name & "'!M40:M41"
280 Let vTemp = Evaluate(strEval) '_- returns 1 "column" 2 "row" array ' {Empty;Empty} value from Range object
290 Let vTemp = Evaluate(strEval).Value '_- returns 1 "column" 2 "row" array ' {Empty;Empty} value from Range object
300 Let vTemp = Range("M40:M41").Value '_- returns 1 "column" 2 "row" array ' {Empty;Empty} value from Range object
310 Let vTemp = Range(strEval).Value '_- returns 1 "column" 2 "row" array ' {Empty;Empty} value from Range object
320 Dim RngTemp As Range
330 Set RngTemp = Evaluate(strEval) '1 Areas Rng '_- Evaluate works slightly differently for a range referrence, and will return a Range Object if the recieving variable is declared ( Dim'ed ) appropriately
340 Let strEval = "='[" & ThisWorkbook.Name & "]" & ThisWorkbook.Worksheets("XLORX").Name & "'!M40:M41,N42"
350 Let vTemp = Evaluate(strEval) '_- returns 1 "column" 2 "row" array ' {Empty;Empty} value from first Area of Range object
360 Let vTemp = Evaluate(strEval).Value '_- returns 1 "column" 2 "row" array ' {Empty;Empty} value from first Area of Range object
370 Set RngTemp = Evaluate(strEval) '2 Areas Rng '_- Evaluate works slightly differently for a range referrence, and will return a Range Object if the recieving variable is declared ( Dim'ed ) appropriately. Here it is a 2 Areas range object
380
390 ' '_- Index way of looking at it:
400 Let strEval = "=Index(I22:K24,0,0)"
410 Let vTemp = Evaluate(strEval) '_- Without specific type, this defaults to Evaluate(strEval).Value --- Variant member type array
420 Set RngTemp = Evaluate(strEval) '_- Range object returned
430 Let strEval = "=Index(I22:K24,1,0)"
440 Let vTemp = Evaluate(strEval)
450 Set RngTemp = Evaluate(strEval) '_- Range object returned
460 Let strEval = "=Index(I22:K24,1,1)"
470 Let vTemp = Evaluate(strEval)
480 Set RngTemp = Evaluate(strEval) '_- Range object returned
490 Let vTemp = Application.Index(Range("I22:K24"), 0, 0) '_- 3 x 3 Array returned
500 Set RngTemp = Application.Index(Range("I22:K24"), 0, 0) '_- 3 x 3 Range object returned
510 Let vTemp = Application.Index(Range("I22:K24"), 1, 0) '_- 1 Dimension 3 Member element Array returned Array returned
520 Set RngTemp = Application.Index(Range("I22:K24"), 1, 0) '_- 1 x 3 Range object returned
530 Let vTemp = Application.Index(Range("I22:K24"), 1, 1) '_- return value A in String type variable
540 Let vTemp = Application.Index(Range("I22:K24"), 1, 3) '_- return value 1 in Double type variabel
545 Let vTemp = Application.Index(Range("I22:K24"), 1, 3).Value '_- return value 1 in Double type variabel
550 Set RngTemp = Application.Index(Range("I22:K24"), 1, 1) '_- 1 cell Range object returned, or deafault to "A"
555 Set RngTemp = Application.Index(Range("A1:B2,I22:K24"), 1, 1, 2) '_- 1 cell Range object returned( same cell as last line )
560 Let vTemp = Application.Index(Range("A1:B2,I22:K24"), 1, 3, 2).Value '_- return value 1 in Double type variabel pgc01 https://www.mrexcel.com/forum/excel-questions/908760-visual-basic-applications-copy-2-dimensional-array-into-1-dimensional-single-column-2.html#post4375560
570 ' '_- Evaluate multivalues 1 ( Back To is now ;) )
580 Let strEval = "={1;2}+{3;4;5}"
590 Let vTemp = Evaluate(strEval) '_- returns {4;6;error}
600 Let strEval = "=M40:M42"
610 Let vTemp = Evaluate(strEval) '_- returns {Empty;Empty;Empty}
620 Set RngTemp = Evaluate(strEval) '_- Range object returned
630 Let strEval = "={1;2}+M40:M42"
640 Let vTemp = Evaluate(strEval) '_- returns {4;6;error}
650 Let strEval = "={1}+M40:M42"
660 Let vTemp = Evaluate(strEval) '_- returns {1;1;1}
670 Let strEval = "={1,2}+M40:M42"
680 Let vTemp = Evaluate(strEval) '_- returns {1,2;1,2;1,2}
690 Let strEval = "=1+M40:M42"
700 Let vTemp = Evaluate(strEval) '_- returns {1;1;1}
710
End Sub
Bookmarks