Display hourglass or Please Wait message while Sub runs
vb.net
Solution
I suggest creating a `PleaseWaitForm` that has the label of `Please Wait...` message on it and then have the form shown as mode-less, change the cursor to hourglass, do Excel work, change cursor back to default and hide the `PleaseWaitForm`.
Dim pleaseWait As New PleaseWaitForm
pleaseWait.Show()
' Set cursor as hourglass
Cursor.Current = Cursors.WaitCursor
Application.DoEvents
' Execute your GoToSheets method here
' Set cursor as default arrow
Cursor.Current = Cursors.Default
' Hide the please wait form
pleaseWait.Hide()
Problem
I have the following sub running on my form. It can take a while for the sub to run so I want to change the cursor to an hourglass and display a Please Wait message while the code is running. Here is my procedure: ``` Public Sub GoToSheets(sheetName As String) 'This sub is used to open the workbook on the selected sheet. 'This checks to see if Excel workbook is opened, if not it 'opens Excel, the workbook and then the selected sheet. If the workbook is 'opened, it goes to the selected sheet. '@param sheetName, sheet to be displayed Try 'get an existing excel.application object xlApp = CType(GetObject(, "Excel.Application"), Application) Catch ex As Exception 'no existing excel.application object - create a new one xlApp = New Excel.Application End Try Dim xlWBName As String = "2011.1004.Compensation Template" Dim xlBookPath As String = Path.Combine(Directory.GetCurrentDirectory()) xlApp.Visible = True Try 'get the opened workbook xlBook = xlApp.Workbooks(xlWBName & ".xlsx") Catch ex As Exception 'open it xlBook = xlApp.Workbooks.Open(xlBookPath & "\" & xlWBName & ".xlsx") End Try Try xlSheet = CType(CType(xlBook.Sheets("summarySheet"), Excel.Worksheet), Excel.Worksheet) Dim strChckRange As String = xlSheet.Range("A2").Value If strChckRange Is Nothing Then Dim frmClientInfo As New frmClientInformation frmClientInfo.ShowDialog() closeXLApp() Else xlSheet = CType(CType(xlBook.Sheets(sheetName), Excel.Worksheet), Excel.Worksheet) 'close the navigation instance on the welcome page frmNavigation.Close() 'activate requested sheet xlSheet.Activate() 'display as dashboard DashboardView() System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) GC.Collect() GC.WaitForPendingFinalizers() GC.Collect() GC.WaitForPendingFinalizers() frmWelcomePage.Hide() chkForm() End If Catch ex As Exception End Try ``` End Sub I have done some research on this, but so far nothing for Visual Basic.