ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   "ByRef argument type mismatch" error (https://www.excelbanter.com/excel-programming/437812-byref-argument-type-mismatch-error.html)

Robert Crandal

"ByRef argument type mismatch" error
 
I get the above stated compile error when I run the following code:

Dim myfile as String
myfile = "Book1.xlsm"

If Module1.IsWbOpen (myfile) Then
' Do stuff
End If

------------------[ IsWbOpen() is in Module1]--------------------

Public Function IsWbOpen(WbName As String) As Boolean
For Each wb In Application.Workbooks
If wb.Name = WbName Then
IsWbOpen = True
Exit For
End If
Next
End Function
--------------------------------------------------------------------


Does anybody know what the heck is wrong here??? I know i am
definitely passing a String variable into "IsWbOpen()", yet I am
seeing a compile error.

Thank you!



OssieMac

"ByRef argument type mismatch" error
 
Hi Robert,

I can't fault the code. It works perfectly. What line does the code stop on
when you get the error? You did copy your code from your project and not
re-write it for this post didn't you?

The error msge suggests that myfile is incorrectly declared as something
other than a string.

--
Regards,

OssieMac


"Robert Crandal" wrote:

I get the above stated compile error when I run the following code:

Dim myfile as String
myfile = "Book1.xlsm"

If Module1.IsWbOpen (myfile) Then
' Do stuff
End If

------------------[ IsWbOpen() is in Module1]--------------------

Public Function IsWbOpen(WbName As String) As Boolean
For Each wb In Application.Workbooks
If wb.Name = WbName Then
IsWbOpen = True
Exit For
End If
Next
End Function
--------------------------------------------------------------------


Does anybody know what the heck is wrong here??? I know i am
definitely passing a String variable into "IsWbOpen()", yet I am
seeing a compile error.

Thank you!


.


joel[_417_]

"ByRef argument type mismatch" error
 

The fix is to add ByVal to the subroutinge declaration. The code
works without the change on My PC with 2003. You omust have a different
option checked in your PC or using a different version of Excel thenI'm
using.

From:

Public Function IsWbOpen(WbName As String) As Boolean

To

Public Function IsWbOpen(Byval WbName As String) As Boolean



The default declaration of a function is ByRef which means if the
variable is changed in the Calling subroutine the change will be seen by
the called function. like this

Sub Main()
Dim MyName As String
MyName = "Joel"
Call ChangeName(MyName)
MsgBox (MyName) 'this will pring Robert
End Sub

Sub ChangeName(Person As String)
Person = "Robert"
End Sub


--
joel
------------------------------------------------------------------------
joel's Profile: 229
View this thread: http://www.thecodecage.com/forumz/sh...d.php?t=165247

Microsoft Office Help



All times are GMT +1. The time now is 02:17 PM.

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