+ Reply to Thread
Results 1 to 3 of 3

Range Problem #2 (continued)

  1. #1
    Steven Drenker
    Guest

    Range Problem #2 (continued)

    If I assign a worksheet to the variable ws and a range to the variable rng,
    why can't I then do a ws.rng.Select?

    If I do it in two steps (i.e., ws.Select followed by a rng.Select),
    everything works.

    Sub test()
    Dim rng As Range
    Dim ws As Worksheet

    Worksheets("Sheet1").Select
    Set rng = Range("A1:A10")
    Set ws = Worksheets("Sheet1")

    Worksheets("Sheet2").Select

    ws.Select ' <- OK. Selects Sheet1
    rng.Select ' <- OK. Selects A1:A10 on Sheet1

    Worksheets("Sheet2").Select
    ' Try to combine ws and rng into one command:
    ws.rng.Select '<- Fails: Method or data member (".rng") not found

    End Sub

    I get the same behavior with the following code:

    Sub test2()
    Dim rng As Range
    Dim str As String

    str = "Sheet2!$A$1:$C$5"
    Set rng = Range(str)

    Worksheets("Sheet1").Select
    ' rng.Select ' <- Fails: Method 'Select' of object 'Range' failed
    rng.Value = "huh?" ' <- Works OK. Changes values on Sheet2 to "huh?"
    End Sub

    It seems the Range knows which worksheet it is associated with, but the
    address of the range does not include the sheet name, only the range
    address. And I can only use the sheet reference inherent in a Range to
    change values, not navigate.


  2. #2
    Tom Ogilvy
    Guest

    Re: Range Problem #2 (continued)

    You are correct that a range is a range on a specific sheet.
    You are incorrect about the address not including the sheet name. You just
    haven't asked properly

    msgbox rng.Address(0,1,xlA1,True)
    msgbox rng.Address(1,0,xlR1C1,True)

    Look at excel vba help at the address property.

    --
    Regards,
    Tom Ogilvy

    "Steven Drenker" <sdrenker@OBFUSCATOR-REMOVEpacbell.net> wrote in message
    news:BFFA67D5.1391F2%sdrenker@OBFUSCATOR-REMOVEpacbell.net...
    > If I assign a worksheet to the variable ws and a range to the variable

    rng,
    > why can't I then do a ws.rng.Select?
    >
    > If I do it in two steps (i.e., ws.Select followed by a rng.Select),
    > everything works.
    >
    > Sub test()
    > Dim rng As Range
    > Dim ws As Worksheet
    >
    > Worksheets("Sheet1").Select
    > Set rng = Range("A1:A10")
    > Set ws = Worksheets("Sheet1")
    >
    > Worksheets("Sheet2").Select
    >
    > ws.Select ' <- OK. Selects Sheet1
    > rng.Select ' <- OK. Selects A1:A10 on Sheet1
    >
    > Worksheets("Sheet2").Select
    > ' Try to combine ws and rng into one command:
    > ws.rng.Select '<- Fails: Method or data member (".rng") not found
    >
    > End Sub
    >
    > I get the same behavior with the following code:
    >
    > Sub test2()
    > Dim rng As Range
    > Dim str As String
    >
    > str = "Sheet2!$A$1:$C$5"
    > Set rng = Range(str)
    >
    > Worksheets("Sheet1").Select
    > ' rng.Select ' <- Fails: Method 'Select' of object 'Range' failed
    > rng.Value = "huh?" ' <- Works OK. Changes values on Sheet2 to "huh?"
    > End Sub
    >
    > It seems the Range knows which worksheet it is associated with, but the
    > address of the range does not include the sheet name, only the range
    > address. And I can only use the sheet reference inherent in a Range to
    > change values, not navigate.
    >




  3. #3
    Bob Phillips
    Guest

    Re: Range Problem #2 (continued)

    Because setting a range always assume a worksheet if you don't explicitly
    state it. So

    Set rng = Range("A1:A10")

    is picking up the range from the activesheet, not ws. You need

    Set rng = ws.Range("A1:A10")

    and then just use rng in the code, not ws.rng.


    --

    HTH

    Bob Phillips

    (remove nothere from the email address if mailing direct)

    "Steven Drenker" <sdrenker@OBFUSCATOR-REMOVEpacbell.net> wrote in message
    news:BFFA67D5.1391F2%sdrenker@OBFUSCATOR-REMOVEpacbell.net...
    > If I assign a worksheet to the variable ws and a range to the variable

    rng,
    > why can't I then do a ws.rng.Select?
    >
    > If I do it in two steps (i.e., ws.Select followed by a rng.Select),
    > everything works.
    >
    > Sub test()
    > Dim rng As Range
    > Dim ws As Worksheet
    >
    > Worksheets("Sheet1").Select
    > Set rng = Range("A1:A10")
    > Set ws = Worksheets("Sheet1")
    >
    > Worksheets("Sheet2").Select
    >
    > ws.Select ' <- OK. Selects Sheet1
    > rng.Select ' <- OK. Selects A1:A10 on Sheet1
    >
    > Worksheets("Sheet2").Select
    > ' Try to combine ws and rng into one command:
    > ws.rng.Select '<- Fails: Method or data member (".rng") not found
    >
    > End Sub
    >
    > I get the same behavior with the following code:
    >
    > Sub test2()
    > Dim rng As Range
    > Dim str As String
    >
    > str = "Sheet2!$A$1:$C$5"
    > Set rng = Range(str)
    >
    > Worksheets("Sheet1").Select
    > ' rng.Select ' <- Fails: Method 'Select' of object 'Range' failed
    > rng.Value = "huh?" ' <- Works OK. Changes values on Sheet2 to "huh?"
    > End Sub
    >
    > It seems the Range knows which worksheet it is associated with, but the
    > address of the range does not include the sheet name, only the range
    > address. And I can only use the sheet reference inherent in a Range to
    > change values, not navigate.
    >




+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1