Passing Boolean result from one function to another

Radoslaw Poprawski

Active Member
Joined
Jun 19, 2021
Messages
397
Office Version
  1. 365
Platform
  1. Windows
Hi All, i have a small code:
VBA Code:
        xRet = IsWorkBookOpen(WBName)
        Call DeleteFiles(WBName, xRet)

VBA Code:
Function IsWorkBookOpen(Name As String) As Boolean
    Dim xWb As Workbook
    On Error Resume Next
    Set xWb = Application.Workbooks.Item(Name)
    IsWorkBookOpen = (Not xWb Is Nothing)
End Function
VBA Code:
Sub DeleteFiles(WBName As String, xRet As Boolean)
        With New FileSystemObject
            If xRet Then Workbooks(WBName).Close
            If .FileExists(Path & WBName) Then
                .DeleteFile Path & WBName
            End If
        End With
End Sub
My issue is when I try running the first 2 lines i get an error:
1667205410402.png

since xRet is boolean in result, then why cant I simply pass it to another function as boolean?
 

Excel Facts

Test for Multiple Conditions in IF?
Use AND(test, test, test, test) or OR(test, test, test, ...) as the logical_test argument of IF.
Hi,
If you do not need to pass your arguments ByRef then pass them ByVal & see if this resolves your issue

VBA Code:
Sub DeleteFiles(ByVal WBName As String, ByVal xRet As Boolean)
        With New FileSystemObject
            If xRet Then Workbooks(WBName).Close
            If .FileExists(Path & WBName) Then
                .DeleteFile Path & WBName
            End If
        End With
End Sub

Function IsWorkBookOpen(ByVal WBName As String) As Boolean
    Dim xWb As Workbook
    On Error Resume Next
    Set xWb = Application.Workbooks.Item(WBName)
    IsWorkBookOpen = (Not xWb Is Nothing)
End Function

Dave
 
Upvote 0
Or just declare xRet as Boolean. I suspect you either haven't declared it at all, or you declared it as Variant.
 
Upvote 0

Forum statistics

Threads
1,215,004
Messages
6,122,659
Members
449,091
Latest member
peppernaut

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top