簡體   English   中英

MS Access VBA創建即時窗口彈出窗口或模擬一個窗口

[英]MS Access VBA Create a immediate window popup or simulate one

我有一個帶遞歸函數的代碼,它檢查文件夾中的文件夾,並在我的數據庫中寫入文件夾的名稱,ID和深度。 重復該過程,直到所有文件夾都在數據庫中(每個項目通常為200個文件夾)。

當我打開代碼窗口運行代碼時,由於debug.print ,我可以看到代碼正在做什么,但由於用戶從未打開代碼窗口,因此他們看不到正在發生的事情。 我想到了2個解決方案。

  1. 打開“即時窗口”作為我的表單上的彈出窗口。
  2. 使用文本框創建表單。

我搜索谷歌,但沒有找到一個有效的解決方案來立即彈出窗口。

至於第二個想法是有一種方法可以將.print發送到文本框,還是像vba中的控制台對象?

我在用

Form_PrintWindow.PrintWindow.Text = xmlNode3.Attributes.getNamedItem("id").Text & " " & xmlNode3.Attributes.getNamedItem("name").Text & vbNewLine & Form_PrintWindow.PrintWindow.Text

但是在這個過程中,字符串會被填滿。

  1. 創建一個帶有空列表框的表單控制適當的大小。 (我命名我的表單DebugOutput和列表框OutputList
  2. UpdateProgress子添加到該表單。 它會將您的其他流程的輸出作為新項目添加到列表框中,並選擇最近添加的項目。

     Public Sub UpdateProgress(text As String) 'add item and select it With Me.OutputList .AddItem text .Selected(.ListCount - 1) = True 'zero based index End With DoEvents 'this frees up the OS to repaint the screen End Sub 
  3. 在現有代碼中,創建一個Form_DebugOutput的新實例(或者您為表單命名的任何內容。請注意,訪問會自動使用Form_ Form_DebugOutput填寫表單。)

  4. 而不是Debug.Print調用我們創建的表單實例的UpdateProgress方法。

     Public Sub testit() Dim output As New Form_DebugOutput output.Visible = True Dim i As Long For i = 1 To 1000 output.UpdateProgress "I've said hello " & i & " times." Next Stop End Sub 

它看起來像這樣。

表單與流程輸出

像這樣實時輸出結果降低代碼速度,因此請仔細考慮是否確實需要顯示此信息。 此外,如果您希望表單保留在屏幕上,則需要在全局范圍內聲明Form變量。 有關這方面的更多信息,您可能需要了解我的進度條

我的建議是使用SysCmd()來更新狀態欄。

這樣做的原因是因為每當我嘗試在代碼運行時輸出到表單時,它就會被擊中並錯過向用戶顯示的內容。 我從來沒有遇到過這種狀況的問題。

 Function FolderImport()
 Dim statBAR as variant
 Dim fldName as string
 statBAR = SysCmd(acSysCmdInitMeter, "Processing Import of Folders", 200)
 For i = 1 to 200
    statBAR=SysCmd(acSysCmdUpdateMeter, i)
    DoCmd.RunSQL "INSERT INTO tblFOLDERS VALUES ('" & fldName & "');"
 Next i
 Forms.frm_NAV.lstFOLDERS.requery()
 End Function

此代碼不是100%完整,但您可以了解正在發生的事情。 在代碼運行時,用戶無論如何都無法執行任何操作,因此代碼運行時在列表框中顯示文件夾與在代碼運行后運行requery()相同。 狀態欄讓用戶知道發生了什么事情,因此他們認為程序沒有凍結。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM