Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
The following does what I want:
Sub testit() Range("b2:d2") = Array(21, 22, 23) End Sub But I would prefer to use a variable instead of Range("b2:d2"). (Part of a larger macro.) Why doesn't the following work? More importantly, how can I make it work? Sub testit() Dim rng Set rng = Range("b2:d2") rng = Array(21, 22, 23) End Sub |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Aha! It works if I declare "Dim rng as Range". Klunk!
----- original message ----- "JoeU2004" wrote in message ... The following does what I want: Sub testit() Range("b2:d2") = Array(21, 22, 23) End Sub But I would prefer to use a variable instead of Range("b2:d2"). (Part of a larger macro.) Why doesn't the following work? More importantly, how can I make it work? Sub testit() Dim rng Set rng = Range("b2:d2") rng = Array(21, 22, 23) End Sub |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
different data types. try:
rng.Value = Array(21, 22, 23) Or if you want rng to = array then: Dim rng As Variant rng = Array(21,22,23) Range("b2:d2") = rng "JoeU2004" wrote in message ... The following does what I want: Sub testit() Range("b2:d2") = Array(21, 22, 23) End Sub But I would prefer to use a variable instead of Range("b2:d2"). (Part of a larger macro.) Why doesn't the following work? More importantly, how can I make it work? Sub testit() Dim rng Set rng = Range("b2:d2") rng = Array(21, 22, 23) End Sub |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi,
try it like this Sub testit() Dim rng Set rng = Range("b2:d2") rng.Value = Array(21, 22, 23) End Sub Mike "JoeU2004" wrote: The following does what I want: Sub testit() Range("b2:d2") = Array(21, 22, 23) End Sub But I would prefer to use a variable instead of Range("b2:d2"). (Part of a larger macro.) Why doesn't the following work? More importantly, how can I make it work? Sub testit() Dim rng Set rng = Range("b2:d2") rng = Array(21, 22, 23) End Sub |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
You're missing the Value property. Edit as follows:
Sub testit() Dim rng Set rng = Range("b2:d2") rng.Value = Array(21, 22, 23) End Sub "JoeU2004" wrote in message ... The following does what I want: Sub testit() Range("b2:d2") = Array(21, 22, 23) End Sub But I would prefer to use a variable instead of Range("b2:d2"). (Part of a larger macro.) Why doesn't the following work? More importantly, how can I make it work? Sub testit() Dim rng Set rng = Range("b2:d2") rng = Array(21, 22, 23) End Sub |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi
The rng is implicit declared as a Variant, so the array is just assigned to the rng variable. To make the it work declare rng as Range, or use rng.Value=Array(...). Using both will also work. Sub testit() Dim rng as Range Set rng = Range("b2:d2") rng.Value = Array(21, 22, 23) End Sub Hopes this helps. --- Per On 6 Maj, 22:14, "JoeU2004" wrote: The following does what I want: Sub testit() Range("b2:d2") = Array(21, 22, 23) End Sub But I would prefer to use a variable instead of Range("b2:d2"). *(Part of a larger macro.) Why doesn't the following work? *More importantly, how can I make it work? Sub testit() Dim rng Set rng = Range("b2:d2") rng = Array(21, 22, 23) End Sub |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
"Mike H" wrote:
try it like this [....] Dim rng Set rng = Range("b2:d2") rng.Value = Array(21, 22, 23) Please discuss the semantic differences between that solution and mine, namely: Dim rng as Range set rng = Range("b2:d2") rng = Array(21,22,23) Are these simply two equivalent ways to do the same thing? Or is mine fundamentally different (how)? I'm not clear on when to use a variant v. Range, and when I need the Value qualifier. ----- original message ----- "Mike H" wrote in message ... Hi, try it like this Sub testit() Dim rng Set rng = Range("b2:d2") rng.Value = Array(21, 22, 23) End Sub Mike "JoeU2004" wrote: The following does what I want: Sub testit() Range("b2:d2") = Array(21, 22, 23) End Sub But I would prefer to use a variable instead of Range("b2:d2"). (Part of a larger macro.) Why doesn't the following work? More importantly, how can I make it work? Sub testit() Dim rng Set rng = Range("b2:d2") rng = Array(21, 22, 23) End Sub |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
One more...
Option Explicit Sub testit1() Dim DestCell As Range Dim myArr As Variant myArr = Array(21, 22, 23) Set DestCell = ActiveSheet.Range("B2") DestCell.Resize(1, UBound(myArr) - LBound(myArr) + 1).Value = myArr End Sub Or vertically: Option Explicit Sub testit3() Dim DestCell As Range Dim myArr As Variant myArr = Array(21, 22, 23) Set DestCell = ActiveSheet.Range("B3") DestCell.Resize(UBound(myArr) - LBound(myArr) + 1, 1).Value _ = application.transpose(myArr) End Sub JoeU2004 wrote: The following does what I want: Sub testit() Range("b2:d2") = Array(21, 22, 23) End Sub But I would prefer to use a variable instead of Range("b2:d2"). (Part of a larger macro.) Why doesn't the following work? More importantly, how can I make it work? Sub testit() Dim rng Set rng = Range("b2:d2") rng = Array(21, 22, 23) End Sub -- Dave Peterson |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
"Per Jessen" wrote:
The rng is implicit declared as a Variant, so the array is just assigned to the rng variable. To make the it work declare rng as Range, or use rng.Value Oh, I think I understand now. Let me parrot it back to see if I got it now. When I declared it as Variant (implicitly) and assigned a Range to it, I made the object type Range, as intended. But by assigning Array subsequently, VBA interpreted that as if I intended to change the object type. By using ".Value", I am clearly telling VBA that I want to treat the object as Range. (Well, it is telling VBA that I want to use the current variable's type, which I hope has a member Value.) But it sounds like it is better practice for me to declare rng as Range, since that it is my intent. Thanks to all who responded. ----- original message ----- "Per Jessen" wrote in message ... Hi The rng is implicit declared as a Variant, so the array is just assigned to the rng variable. To make the it work declare rng as Range, or use rng.Value=Array(...). Using both will also work. Sub testit() Dim rng as Range Set rng = Range("b2:d2") rng.Value = Array(21, 22, 23) End Sub Hopes this helps. --- Per On 6 Maj, 22:14, "JoeU2004" wrote: The following does what I want: Sub testit() Range("b2:d2") = Array(21, 22, 23) End Sub But I would prefer to use a variable instead of Range("b2:d2"). (Part of a larger macro.) Why doesn't the following work? More importantly, how can I make it work? Sub testit() Dim rng Set rng = Range("b2:d2") rng = Array(21, 22, 23) End Sub |
#10
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi
You got it right, And yes you should always declare all your variables as the desired type, see the site below http://www.ozgrid.com/VBA/variables.htm Regards, Per On 6 Maj, 22:41, "JoeU2004" wrote: "Per Jessen" wrote: The rng is implicit declared as a Variant, so the array is just assigned to the rng variable. To make the it work declare rng as Range, or use rng.Value Oh, I think I understand now. *Let me parrot it back to see if I got it now. When I declared it as Variant (implicitly) and assigned a Range to it, I made the object type Range, as intended. But by assigning Array subsequently, VBA interpreted that as if I intended to change the object type. By using ".Value", I am clearly telling VBA that I want to treat the object as Range. *(Well, it is telling VBA that I want to use the current variable's type, which I hope has a member Value.) But it sounds like it is better practice for me to declare rng as Range, since that it is my intent. Thanks to all who responded. ----- original message ----- "Per Jessen" wrote in message ... Hi The rng is implicit declared as a Variant, so the array is just assigned to the rng variable. To make the it work declare rng as Range, or use rng.Value=Array(...). Using both will also work. Sub testit() Dim rng as Range Set rng = Range("b2:d2") rng.Value = Array(21, 22, 23) End Sub Hopes this helps. --- Per On 6 Maj, 22:14, "JoeU2004" wrote: The following does what I want: Sub testit() Range("b2:d2") = Array(21, 22, 23) End Sub But I would prefer to use a variable instead of Range("b2:d2"). (Part of a larger macro.) Why doesn't the following work? More importantly, how can I make it work? Sub testit() Dim rng Set rng = Range("b2:d2") rng = Array(21, 22, 23) End Sub- Skjul tekst i anførselstegn - - Vis tekst i anførselstegn - |
#11
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
The failure to dimension rng defaults it to variant and simply makes rng=array
Mike "JoeU2004" wrote: "Mike H" wrote: try it like this [....] Dim rng Set rng = Range("b2:d2") rng.Value = Array(21, 22, 23) Please discuss the semantic differences between that solution and mine, namely: Dim rng as Range set rng = Range("b2:d2") rng = Array(21,22,23) Are these simply two equivalent ways to do the same thing? Or is mine fundamentally different (how)? I'm not clear on when to use a variant v. Range, and when I need the Value qualifier. ----- original message ----- "Mike H" wrote in message ... Hi, try it like this Sub testit() Dim rng Set rng = Range("b2:d2") rng.Value = Array(21, 22, 23) End Sub Mike "JoeU2004" wrote: The following does what I want: Sub testit() Range("b2:d2") = Array(21, 22, 23) End Sub But I would prefer to use a variable instead of Range("b2:d2"). (Part of a larger macro.) Why doesn't the following work? More importantly, how can I make it work? Sub testit() Dim rng Set rng = Range("b2:d2") rng = Array(21, 22, 23) End Sub |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Return a range based on a variable | Excel Worksheet Functions | |||
Return actual range not cell value in variable | Excel Worksheet Functions | |||
Return a value if variable is in a range | Excel Discussion (Misc queries) | |||
can .range return a 1D array? | Excel Programming | |||
Problem trying to us a range variable as an array variable | Excel Programming |