Wrong number of arguments or invalid property assignment in CustomUI only

Serafin54

Board Regular
Joined
Apr 11, 2014
Messages
137
Office Version
  1. 2016
Platform
  1. Windows
Hello, I have a code that runs just fine as stand alone but once i assign it to code in Custom UI, it comes back with the Wrong number of Assignments error. From what I can see, the mapping links up just fine so I'm really lost as to why it is failing this way and not the other. I'll include a snip of the UI code for brevity but will post all if needed. Thanks for the help.

VBA Code:

VBA Code:
Sub SearchFolders(Control As IRibbonControl)

    Dim xFso As Object
    Dim xFld As Object
    Dim xStrSearch As String
    Dim xStrPath As String
    Dim xStrFile As String
    Dim xOut As Worksheet
    Dim xWb As Workbook
    Dim xWk As Worksheet
    Dim xRow As Long
    Dim xFound As Range
    Dim xStrAddress As String
    Dim xFileDialog As FileDialog
    Dim xUpdate As Boolean
    Dim xCount As Long
    On Error GoTo ErrHandler
    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    xFileDialog.AllowMultiSelect = False
    xFileDialog.title = "Select a folder"
    If xFileDialog.Show = -1 Then
        xStrPath = xFileDialog.SelectedItems(1)
    End If
    If xStrPath = "" Then Exit Sub
    xStrSearch = InputBox(Prompt:="String to search for", title:="Search Workbooks in Folder")
    xUpdate = Application.ScreenUpdating
    Application.ScreenUpdating = False
    Set xOut = Worksheets.Add
    xRow = 1
    With xOut
        .Cells(xRow, 1) = "Workbook"
        .Cells(xRow, 2) = "Worksheet"
        .Cells(xRow, 3) = "Cell"
        .Cells(xRow, 4) = "Text in Cell"
        Set xFso = CreateObject("Scripting.FileSystemObject")
        Set xFld = xFso.GetFolder(xStrPath)
        xStrFile = Dir(xStrPath & "\*.xls*")
        Do While xStrFile <> ""
            Set xWb = Workbooks.Open(Filename:=xStrPath & "\" & xStrFile, UpdateLinks:=0, ReadOnly:=True, AddToMRU:=False)
            For Each xWk In xWb.Worksheets
                Set xFound = xWk.UsedRange.Find(xStrSearch)
                If Not xFound Is Nothing Then
                    xStrAddress = xFound.Address
                End If
                Do
                    If xFound Is Nothing Then
                        Exit Do
                    Else
                        xCount = xCount + 1
                        xRow = xRow + 1
                        .Cells(xRow, 1) = xWb.Name
                        .Cells(xRow, 2) = xWk.Name
                        .Cells(xRow, 3) = xFound.Address
                        .Cells(xRow, 4) = xFound.Value
                    End If
                    Set xFound = xWk.Cells.FindNext(After:=xFound)
                Loop While xStrAddress <> xFound.Address
            Next
            xWb.Close (False)
            xStrFile = Dir
        Loop
        .Columns("A:D").EntireColumn.AutoFit
    End With
    MsgBox xCount & " found string(s)"
ExitHandler:
    Set xOut = Nothing
    Set xWk = Nothing
    Set xWb = Nothing
    Set xFld = Nothing
    Set xFso = Nothing
    Application.ScreenUpdating = xUpdate
    Exit Sub
ErrHandler:
    MsgBox Err.Description, vbExclamation
    Resume ExitHandler
End Sub

Custom UI code:
VBA Code:
                    <button id="customButton800" label="Search Folders for Text" screentip="Will prompt you to select a folder and text you are looking to return and will map each with their file name, Sheet and Cell address" onAction="SearchFolders" imageMso="ZoomPrintPreviewExcel" />
 

Excel Facts

Difference between two dates
Secret function! Use =DATEDIF(A2,B2,"Y")&" years"&=DATEDIF(A2,B2,"YM")&" months"&=DATEDIF(A2,B2,"MD")&" days"

Micron

Well-known Member
Joined
Jun 3, 2015
Messages
3,798
Office Version
  1. 365
Platform
  1. Windows
IIRC, a procedure called by a ribbon control must be a function, not a sub. At least that's the way it always was with the old commandbars.
 

Serafin54

Board Regular
Joined
Apr 11, 2014
Messages
137
Office Version
  1. 2016
Platform
  1. Windows
IIRC, a procedure called by a ribbon control must be a function, not a sub. At least that's the way it always was with the old commandbars.
When i generate the callbacks, it is hard coded as a sub so i'm really lost at what i can do, if anything, to get this to properly work together.

'Callback for customButton800 onAction
Sub SearchFolders(control As IRibbonControl)
End Sub
 

Micron

Well-known Member
Joined
Jun 3, 2015
Messages
3,798
Office Version
  1. 365
Platform
  1. Windows
The only other suggestion I have is to not used a reserved word (Control) and to try ctrl instead.

Should you wish to try a function instead, I believe the call must contain = sign; e.g.
onAction = "=SearchFolders()"

Actually, there is one other thing: your procedures are in a standard module, yes? I believe that is also a requirement, but am not positive. I don't do much ribbon coding.
 

Serafin54

Board Regular
Joined
Apr 11, 2014
Messages
137
Office Version
  1. 2016
Platform
  1. Windows
I'm not sure if it was an issue with excel but i rebooted my computer and the error disappeared. So odd. Thanks for looking.
 
Solution

Forum statistics

Threads
1,176,671
Messages
5,904,384
Members
435,089
Latest member
blackstapler

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
Top