Hi Jezebel,
Thank you for your explanation.
This thread is gone off-topic, but still I'd like to make a final remark. In my program, my class sets and reads the
text in several cells of a table placed in a document it describes. Thus, I have coded the property GetTextFromRange()
as read/write. When you say that it rather looks like a function I wonder if it's because of the (misleading) identifier
I used, which implies an process. In actuality, I think it would be more appropriate to write the whole thing as follows:
'Class module
Public Property Let TargetText (StringA as String)
StringA = Trim(StringA)
Activedocument.Tables(1).Columns(2).Cells(3).Range.Text = StringA
End Property
Public Property Get TargetText () as String
TargetText = Activedocument.Tables(1).Columns(2).Cells(3).Range.Text
End Property
'End of class module
This way it is clearer that the code mainly manipulates a property. Would you still implement it as a function instead?
Regards,
Guillermo
You're right about functions and properties being to some extent a matter of
preference; but there is an important conceptual difference in
object-oriented programming (which is what you are doing with VBA).
Properties are values, derived by calculation perhaps, but essentially
static. They can be set as well as read (unless you choose to make the read-
or write-only). When you query a property, you are asking for some
information about the thing that has that property. In your example,
GetTextFromRange isn't a property of anything (and it would make no
difference where you put the function); nor would it make any sense to *set*
the GetTextFromRange property.