按鍵精靈除錯三天,氣到吐血!!快速開發指令碼程式碼常見錯誤!絕對乾貨!
來源:按鍵學院 【按鍵精靈】
還記不記得,那些天,急著交指令碼的時候出bug了。通宵了三天三夜,調試出錯。邏輯檢查了一邊又一邊,萬行程式碼反反覆覆翻來覆去推敲了無數遍。結果……
不要告訴我是中英文符號寫錯了,變數定義出錯了,我保證不打死我自己……
1:定義變數時直接賦值
報錯提示:沒有找到合法的符號
//(錯誤程式碼0)沒有找到合法的符號
Dim a = 1
正確程式碼:定義變數時不能直接賦值哦~
Dim a
a = 1
2:迴圈語句未設定迴圈次數
報錯提示:沒有找到合法的符號
//第0行:無法計算取值。錯誤附加碼=775:0
For '(錯誤碼0)沒有找到合法的符號。
MessageBox a
Next
正確程式碼:迴圈語句,需要在for迴圈後面,加上迴圈次數哦~不然電腦那麼笨……
For 5
MessageBox a
Next
3:語句書寫不全
報錯提示:無法計算取值。錯誤附加碼=775:0
//語句書寫不全
For i = 0 To 10 step
Next
正確程式碼:迴圈語句,在步徑step後,需要指定具體的數值:如step 2 ,每次迴圈結束的時候變數+2;step 1,每次迴圈結束變數+1。
For i = 0 To 10 step 1
Next
4:未設定迴圈條件
報錯提示:無法計算取值。錯誤附加碼=775:0
//語法錯誤:指令碼 11-12 ,第21行,第7個字元:(錯誤碼0)沒有找到合法的符號。
//語義錯誤:指令碼 11-12 ,第0行:無法計算取值。錯誤附加碼=775:0
While
Wend
正確程式碼:親,沒有定義變數,也沒有設定while的迴圈條件哦(while後面加一個引數:迴圈條件)
Dim a
a = 1
While a = 1
Wend
5:變數名與子程式、子函式重名
報錯提示:名稱有重複。錯誤附加碼=3102:0
//語義錯誤:指令碼 11-12 ,第60行:名稱有重複。錯誤附加碼=3102:0
Dim 找字
Sub 找字()
End Sub
正確程式碼:定義的變數名稱,不能與已有的子程式或者子函式重名哦~不然按鍵無法判斷你想呼叫的是誰~
6:取陣列元素下標超出範圍
報錯提示:下標越界: '[number: 11]'
//指令碼 **.Q ,第**行:下標越界: '[number: 11]',
Dim a(9)
MessageBox a(11)
正確程式碼:在按鍵精靈中,定義陣列時dim a(9),意味著陣列a的最大下限是a(9)。而在呼叫的時候,記得千萬不能超過定義的陣列下限哦·~~
7:錯誤型別作大小比較
報錯提示:型別不匹配: 'A'
//指令碼 11-12.Q ,第37行:型別不匹配: 'A',
Dim a
a = "a"
If a > 1 Then
MessageBox "a大於1"
End If
正確程式碼:“If a > 1”,左邊是字串,右邊是數值,無法進行比較~若需要將其作比較可先將字串轉換成ANSI程式碼後比較
Dim a
a = "a"
//得到"a"的ANSI字元程式碼後作大小比較
If Asc(a) > 1 Then
MessageBox "a大於1"
End If
8:使用陣列未先定義
報錯提示:型別不匹配:
//指令碼 11-12.Q ,第52行:型別不匹配: 'MYARRAY',
//指令碼 11-12.Q ,第53行:型別不匹配: 'A',
W1 = Clng(MyArray(0))
w1=clng(a(1))
正確程式碼:又是一個呼叫變數的時候,沒有好好定義的憂桑錯誤:
Dim MyArray(5)
Dim a(5)
W1 = Clng(MyArray(0))
w1=clng(a(1))
9:延時命令不合理
Delay 6000
//上面語句可用下面的限定次數迴圈語句取代,可解決按停止鍵停不下來的情況。
For 60
Delay 100
Next
報錯提示:根本停不下來啊啊啊……
10:子程式使用錯誤
報錯提示:無法計算取值。
//指令碼 常見指令碼錯誤 ,第66行:無法計算取值。錯誤附加碼=775:120
TracePrint prints("ss")
Sub prints(str1)
prints = str1
End Sub
正確程式碼:sub子程式無返回值,若想輸出返回值使用Function函式哦~
TracePrint prints("ss")
Function prints(str1)
prints = str1
End Function