首页 > 解决方案 > 比较多列列表框中的单元格和选定项时类型不匹配

问题描述

我正在学习 VBA,这个论坛已经帮助了我很多次,检查了以前的问题和答案,但是这次我无法弄清楚发生了什么,也找不到有效的现有解决方案。

因此,我在工作表中有两个列表框:LB_SelectTaskToDelete 和 LB_SelectLineToDelete。第一个 lisbox 的目的是允许用户选择一个任务,稍后我将在宏中使用它来查找它并在另一个工作表中将其删除。每个任务都可以链接到一个或多个“行”,因此第二个列表框允许用户为选定的任务选择他想要删除的特定行。此处的代码在 LB_SelectTaskToDelete Change 事件上,用于填充第二个列表框。

在我只使用一列的 LB_SelectTaskToDelete 之前,这就像一个魅力:

For Each cell In rng
If [cell.Value = LB_SelectTaskToDelete.Value] And [activetask = "Y"] Then LB_SelectLineToDelete.AddItem cell.Offset(0, 3).Value 
Next cell

但我想为添加第二列的用户提供更多信息,现在我不知道如何使它工作。

目前看起来像这样,但我不断收到类型不匹配错误。

If LB_SelectTaskToDelete.ListIndex > -1 And LB_SelectTaskToDelete.Selected(LB_SelectTaskToDelete.ListIndex) Then
    For Each cell In rng
    activetask = CStr(cell.Offset(0, -2).Value)
    selectedTask = CStr(LB_SelectTaskToDelete.List(LB_SelectTaskToDelete.ListIndex, 0))
    celltext = CStr(cell.Text)
    If [celltext = selectedtask] Then MsgBox ("Works") ' Should be an And with the two statements
    If [activetask = "Y"] Then MsgBox ("works too") 'LB_SelectLineToDelete.AddItem cell.Offset(0, 3).Value
    Next cell
End If

错误出现在

If [celltext = selectedtask] Then

变量中保存的文本是这样的:“PM001” 如果都是字符串,为什么类型不匹配?

标签: excelvba

解决方案


推荐阅读