如何避免VB程式中的這種“執行時錯誤”?

發布 財經 2024-02-19
12個回答
  1. 匿名使用者2024-01-25

    您可以在語句之前使用 On Error Resume Next 語句,然後確定語句中是否包含“無法刪除註冊金鑰”字樣,如果是,則表示啟動已取消。 這樣,程式就不會報告錯誤。

    使用你給出的摺疊的**。

    **例如:

    set reg = createobject("")on error resume next

    hkey 本地計算機 Virtual Brother\Software\Microsoft\Windows\CurrentVersion 執行"

    if instr(, "無法刪除註冊金鑰"賣得很差,打了 0 然後msgbox"程式未設定為與系統一起啟動。 "

    endifset reg = nothing if instr(,"無法刪除註冊金鑰"0 然後也可以更改為使用錯誤號,這樣即使在英語環境中,也不會因為"無法刪除註冊金鑰"錯誤訊息變為英文,導致判斷錯誤:

    if = 2147024894 then

  2. 匿名使用者2024-01-24

    關鍵字 me 可以出現在類模組中。 它也可以是形式。 截圖中出現這個錯誤的原因可能是 ** 放在了標準模組中,解決方法是將 me 替換為指定的物件名稱。

    由於問題資訊不完整,因此只能自己嘗試。

    螢幕截圖中圈出的幾個地方可能會出現相同的問題。

  3. 匿名使用者2024-01-23

    在Excel中,VBA指示下標越界,指示物件不存在或陣列元素不存在。

    舉個簡單的例子:工作表中沒有人"一月"但是,此工作表使用工作表("一月");陣列定義了 arr(1 到 10),但將使用 arr(11),並且下標將越界。

    簡單地說:越界下標是超出範圍的引號。

    1.當我們在Excel的VBA中輸入以下**並執行時,會出現“執行過程中錯誤9下標越界”的提示。 **下面:

    sub a()

    dim arr() as string

    arr(1) = 你好"

    end sub

    2.其實上面的“執行時錯誤9下標越界”是因為定義的動態陣列沒有確定維度和大小。 這個問題可以通過定義固定數量的維度和維度來解決,或者通過使用 redim 定義維度和維度來解決。

    更正後的**如下:

    sub a()

    dim arr() 定義了乙個動態陣列。

    dim i as integer

    redim arr(1 to 3) '定義乙個由 3 個元素組成的陣列並初始化該陣列。

    arr(1) =3

    arr(2) =4

    arr(3) =5'在下面的語句中,重新定義乙個包含 10 個元素的陣列,清除前面的元素,並重新分配新的儲存變數。

    redim arr(1 to 10)

    for i = 1 to 10

    arr(i) =i

    next i

    結束子,就是這樣。

  4. 匿名使用者2024-01-22

    樓上搞笑。 80%的此類問題是您的程式是用錯誤編寫的。

    如果操作記憶體或一些危險的控制代碼,使用CopyMemory、varptr、callwindowproc等危險的操作函式與VB本身相比,這樣在執行程式時一不小心,就可能導致記憶體訪問越界、資料覆蓋、記憶體洩漏、段異常、堆疊溢位、堆疊不平衡等問題。

    需要注意的是,這些問題可能不會導致程式在發生後立即宕機,但往往帶有滯後,執行後表面可能沒有異常,但是整個程式執行環境的某些方面已經損壞了(比如棧不平衡),或者VB託管的一些控制代碼失效了, 這將在未來的某個時候引起問題。

    至於為什麼你的程式會導致VB的IDE掛起,那是因為按F5執行程式,其實VB工作在解釋模式下,你編寫的程式和VB的IDE是同乙個程序,所以你程式中的錯誤會導致VB的IDE失敗,而且經常是滯後,當你的程式退出時, 一些錯誤會突然發生(最簡單的例子,你在VB中申請了乙個陣列,然後使用CopyMemory來改變它的安全陣列結構,如果你在退出程式的時候不改回去,那麼VB IDE在程式退出時會因為**空格錯誤而崩潰,當然這屬於BT的用法)。

    如果開啟乙個新的 VB,載入專案,編譯它並獨立啟動它,則不會出現 IDE 錯誤。 這也是很多人在VB6比較危險的時候除錯的常用方式。 或者養成在每個 f5 之前儲存的習慣。

    補充:有人說,這些80%是你的**問題,如果你換了乙個新的VB並且這種問題仍然出現,那麼20%基本上被排除在外。 正如我所說,你最好先檢查你的**。

    如果你實在看不懂,可以發布**片段給大家看,幫你找茬。

  5. 匿名使用者2024-01-21

    你的VB有問題...... 這是VB的錯,重新安裝VB不是你的,,,,你不能再使用它了。

    您是否通過程式設計來操縱記憶體或其他危險的 API?

    如果是這樣,那可能是因為你的程式不嚴謹,如果你只是使用 VB 的內部函式和一些控制項,這絕對不是你的程式的問題。

  6. 匿名使用者2024-01-20

    這不是VB問題,你檢查病毒,因為“**無法讀取”意味著無法讀取記憶體,如果它是“0x0000....名稱是程式根本沒有分配記憶體。

  7. 匿名使用者2024-01-19

    “** cannot be read”是典型的記憶體訪問越界,例如,VB 中的簡單語句可能會導致此錯誤:

    copymemory byval 0&, 0, 1 '將資料寫入位址 0。

    您確定可以直接訪問 VB 程式中的記憶體嗎? 或者是否有任何對其他庫的引用? 這些庫可能不完整或包含有風險的操作。

  8. 匿名使用者2024-01-18

    因為a-b=-90,在找它的平方根時有誤差,因為負數沒有平方根(在實數範圍內),所以sqr(x)函式需要引數x 0,而這個程式中的sqr(-90)引數明顯是負數,所以提示引數無效。 所以應該選擇C。

  9. 匿名使用者2024-01-17

    選擇答案 C

    負數不能取平方根。

  10. 匿名使用者2024-01-16

    它後面應該有乙個雙精度變數,此外,它應該大於 0

  11. 匿名使用者2024-01-15

    timer1 time() 中,不要直接使用 n,而是使用隱藏的文字框來儲存 n,這在不同的函式中是不一樣的。

  12. 匿名使用者2024-01-14

    取下閃光燈控制項並嘗試一下,很可能是這個問題。

相關回答
12個回答2024-02-19

只有多了進步才能解決,不死記硬背才能解決問題,也許你打五開用五筆,發現想背詞根的時候就開始鬧事了,但是你發現不好背,或者背不下來,但時間長了, 你會慢慢地,腦子裡想著乙個詞,手會自然而然地打出來,所以寫下來沒有多大意義,只有用到的時候,才不會去網上找,現在是網際網絡時代,有些東西:一點點。

19個回答2024-02-19

ASC 函式。

返回乙個整數,表示乙個字串。 >>>More

4個回答2024-02-19

cmd1 中。

open "(在此處輸入完整路徑,例如 c:,不要錯過引號,不要用括號括起來)。" for output as #1 '開啟 如果它已經存在,請用新的替換舊的,如果您不想替換它並想繼續在文字末尾書寫,請將輸出更改為附加 >>>More

9個回答2024-02-19

在拍攝人物時,以下錯誤很常見,了解它們可以幫助您更好地避免犯錯誤並拍攝更好的效果。 >>>More

7個回答2024-02-19

父母要給孩子定規矩,做錯事要給他們一些懲罰,做對事後要鼓勵他們,或者給他們一些小小的獎勵,教育孩子時一定不能心軟。