ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Force use of standard function (https://www.excelbanter.com/excel-programming/366284-force-use-standard-function.html)

Mark Olsen

Force use of standard function
 
Hi,
I have a class module that has a function called Year(). Normally, this is
fine but in the class module I use the standard vba function Year() to
extract the year from a date. However, vba thinks that this is the class
modules Year() function. How can I tell it to use the standard Year()
function without changing the name of the Year() function in my class module.


DDonnachie

Force use of standard function
 
Seriously Mark, rename your function. I am not saying there isn't a way
round this but its a bad idea to have a procedure of yours with the same name
as a standard VB function.

"Mark Olsen" wrote:

Hi,
I have a class module that has a function called Year(). Normally, this is
fine but in the class module I use the standard vba function Year() to
extract the year from a date. However, vba thinks that this is the class
modules Year() function. How can I tell it to use the standard Year()
function without changing the name of the Year() function in my class module.


Bernie Deitrick

Force use of standard function
 
Mark,

You can't have it both ways, so RENAME your function:

Sub Test()
MsgBox myYear("1/2/2007")
End Sub

Function myYear(inDate As Date) As Integer
myYear = Year(inDate)
End Function

HTH,
Bernie
MS Excel MVP


"Mark Olsen" wrote in message
...
Hi,
I have a class module that has a function called Year(). Normally, this is
fine but in the class module I use the standard vba function Year() to
extract the year from a date. However, vba thinks that this is the class
modules Year() function. How can I tell it to use the standard Year()
function without changing the name of the Year() function in my class module.




Peter T

Force use of standard function
 
Best not to name functions same as VBA's functions. However this appears to
work -

' normal module
Sub test()
Dim c As New Class1

MsgBox c.Year(2&) & vbCr & _
Year(4&) & vbCr & _
VBA.DateTime.Year(Date)

End Sub

Function Year(n As Long) As Long
Year = n + 2000
End Function

'code in Class1
Public Function Year(n As Long) As Long
Year = n + 2000
End Function

Regards,
Peter T


"Mark Olsen" wrote in message
...
Hi,
I have a class module that has a function called Year(). Normally, this

is
fine but in the class module I use the standard vba function Year() to
extract the year from a date. However, vba thinks that this is the class
modules Year() function. How can I tell it to use the standard Year()
function without changing the name of the Year() function in my class

module.




Chip Pearson

Force use of standard function
 
You shouldn't use VBA reserved words as function names. However,
you can force VBA to use its own function by including the VBA
library name:

Dim Res As Integer
Res = VBA.Year(whatever)

When you are calling your own Year function from within the class
module, use

Res = Me.Year(whatever)


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com



"Mark Olsen" wrote in
message
...
Hi,
I have a class module that has a function called Year().
Normally, this is
fine but in the class module I use the standard vba function
Year() to
extract the year from a date. However, vba thinks that this is
the class
modules Year() function. How can I tell it to use the standard
Year()
function without changing the name of the Year() function in my
class module.




Chip Pearson

Force use of standard function
 
You can't have it both ways, so RENAME your function:

Actually you can have it both ways. Use

VBA.Year for the VBA function and
Me.Year for the class module function.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com


"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
Mark,

You can't have it both ways, so RENAME your function:

Sub Test()
MsgBox myYear("1/2/2007")
End Sub

Function myYear(inDate As Date) As Integer
myYear = Year(inDate)
End Function

HTH,
Bernie
MS Excel MVP


"Mark Olsen" wrote in
message
...
Hi,
I have a class module that has a function called Year().
Normally, this is
fine but in the class module I use the standard vba function
Year() to
extract the year from a date. However, vba thinks that this
is the class
modules Year() function. How can I tell it to use the
standard Year()
function without changing the name of the Year() function in
my class module.







All times are GMT +1. The time now is 12:26 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com