If Ubound(Filter(droplist.list,"重命名",True)))=-1 then
msgbox “重命名選項不存在"
droplist.additem "重命名"
droplist是一個combox.
目的是為了實作,當combox.list沒有”重命名"時,添加一個“重命名"選項。
運行時報“型別不匹配"。
uj5u.com熱心網友回復:
這個問題也可轉化為:陣列可賦值給Combox.list,反過來,combox.list怎么賦值給陣列?
uj5u.com熱心網友回復:
報錯資訊已經那么明確了在錯誤處斷點,debug.print 看看 combox.list 是什么資料型別,然后看看 Filter() 的三個引數分別要求什么型別。
如果都沒錯,看看Filter()回傳的是什么資料型別,是否是ubound()要求的輸入型別。
uj5u.com熱心網友回復:
注釋掉所有On Error Resume Next陳述句,在VBA IDE中運行,出錯后點擊除錯,游標會停在出錯的那條陳述句處,
或者
事先在懷疑可能有邏輯錯誤的陳述句處設定斷點,運行經過斷點時中斷,
此時可以在立即視窗中使用
?變數名
或
?函式名(函式引數)
或
程序名(引數)
輔助除錯。
uj5u.com熱心網友回復:
For i = 0 To droplist.ListCount - 1If droplist.List(i) = "重命名" Then Exit For
Next i
If i = droplist.ListCount Then
Msgbox “重命名選項不存在"
droplist.AddItem "重命名"
End If
uj5u.com熱心網友回復:
利用 API 的做法:Private Declare Function SendMessagebyString Lib _
"user32" Alias "SendMessageA" (ByVal hWND As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As String) As Long
Private Const CB_FINDSTRINGEXACT = &H158
If SendMessagebyString(droplist.hWnd, CB_FINDSTRINGEXACT, -1, "重命名") = -1 Then
Msgbox “重命名選項不存在"
droplist.Additem "重命名"
End If
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/50052.html
標籤:VBA
