我的表单上运行了以下子程序。 sub可能需要一段时间才能运行,因此我想将光标更改为沙漏并在代码运行时显示Please Wait消息。这是我的程序:
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
我已经对此做了一些研究,但到目前为止还没有任何Visual Basic。
答案 0 :(得分:3)
我建议创建一个标有PleaseWaitForm
标签的Please Wait...
,然后将表单显示为无模式,将光标更改为沙漏,执行Excel工作,将光标更改回默认并隐藏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()