tiredofit
Well-known Member
- Joined
- Apr 11, 2013
- Messages
- 1,825
- Office Version
- 365
- 2019
- Platform
- Windows
My understanding of ranges is it is referenced like Worksheet.Range.
Can someone please tell me how I can make Idea 1 work?
Standard module:
This is Class1:
Bu this works:
Class2:
Thanks
Can someone please tell me how I can make Idea 1 work?
Standard module:
Code:
' Idea 1.
Sub Fails()
Dim a As Class1
Set a = New Class1
Set a.wks = Sheet1
Set a.rng = a.wks.Range("A1")
Call a.Test
End Sub
This is Class1:
Code:
Option Explicit
Private pwks As Worksheet
Private prng As Range
Public Property Get wks() As Worksheet
Set wks = pwks
End Property
Public Property Set wks(ByVal w As Worksheet)
Set pwks = w
End Property
Public Property Get rng() As Range
Set rng = prng
End Property
Public Property Set rng(ByVal r As Range)
Set prng = r
End Property
Public Sub Test()
'***** TRIED THESE OPTIONS, ALL FAILED
Debug.Print Me.wks(Me.rng.Value)
' or
Debug.Print Me.wks.Me.rng.Value
'or
Debug.Print Worksheets(Me.wks.Name).Me.rng.Value
End Sub
Bu this works:
Code:
' Idea 2.
Sub Works()
Dim a As Class2
Set a = New Class2
Set a.wks = Sheet1
a.str = "A1"
Call a.Test
End Sub
Class2:
Code:
Option Explicit
Private pwks As Worksheet
Private pstr As String
Public Property Get wks() As Worksheet
Set wks = pwks
End Property
Public Property Set wks(ByVal w As Worksheet)
Set pwks = w
End Property
Public Property Get str() As String
str = pstr
End Property
Public Property Let str(ByVal s As String)
pstr = s
End Property
Public Sub Test()
Debug.Print Me.wks.Range(str).Value
End Sub
Thanks