Combox.List作为数组放入Filter函数,报错“类型不匹配”

hulihuihong 2018-02-21 10:39:07
If Ubound(Filter(droplist.list,"重命名",True)))=-1 then
msgbox “重命名选项不存在"
droplist.additem "重命名"

droplist是一个combox.

目的是为了实现,当combox.list没有”重命名"时,添加一个“重命名"选项。

运行时报“类型不匹配"。
...全文
700 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
of123 2018-02-26
  • 打赏
  • 举报
回复
利用 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
of123 2018-02-26
  • 打赏
  • 举报
回复
For i = 0 To droplist.ListCount - 1 If droplist.List(i) = "重命名" Then Exit For Next i If i = droplist.ListCount Then Msgbox “重命名选项不存在" droplist.AddItem "重命名" End If
赵4老师 2018-02-25
  • 打赏
  • 举报
回复
注释掉所有On Error Resume Next语句,在VBA IDE中运行, 出错后点击调试,光标会停在出错的那条语句处, 或者 事先在怀疑可能有逻辑错误的语句处设置断点,运行经过断点时中断, 此时可以在立即窗口中使用 ?变量名 或 ?函数名(函数参数) 或 过程名(参数) 辅助调试。
脆皮大雪糕 2018-02-22
  • 打赏
  • 举报
回复
报错信息已经那么明确了 在错误处断点,debug.print 看看 combox.list 是什么数据类型,然后看看 Filter() 的三个参数分别要求什么类型。 如果都没错,看看Filter()返回的是什么数据类型,是否是ubound()要求的输入类型。
hulihuihong 2018-02-21
  • 打赏
  • 举报
回复
这个问题也可转化为: 数组可赋值给Combox.list,反过来,combox.list怎么赋值给数组?

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧