【问题标题】:Listbox Populated From Worksheet, Can't Find Original Value从工作表填充的列表框,找不到原始值
【发布时间】:2019-11-06 15:28:36
【问题描述】:

我能够使用工作表中的一系列值来填充我的列表框。现在我想填充从列表框中选择的值旁边的单元格,但它似乎找不到从列表框中选择的原始值。

Private Sub cmdAdd_Click()

LastRow = Cells(Rows.Count, 2).End(xlUp).Row

For j = 2 To LastRow
    If Cells(j, 2).Value = cmbStage.Value Then
        For k = 2 To LastRow
            If Cells(k, 3).Value = lstJobCard.Value Then
                Cells(k, 4).Value = lstJobCard.Value & ": " & txtNote.Value
            End If
        Next k
    End If
Next j
Unload Me

End Sub

我做错了什么?

【问题讨论】:

  • 我不明白为什么你有一个双 for 循环?内部循环将忽略外部循环的结果,并将值放在第 3 列中每个找到的 lstJobCard 实例旁边。
  • @tigetavatar 我正在遍历两个不同的列。第一个 for 循环将遍历 B 列并从组合框中查找值。第二个 for 循环将查找单元格与列表框匹配的位置,前提是已经找到组合框。如果两者都匹配,我希望它输出注释文本框。这是我最初的想法。它目前没有找到两者相等的单元格(即使它在那里)。
  • 那么没有第二个循环,只需在 if 语句中添加 And 条件:If Cells(j, 2).Value = cmbStage.Value And Cells(j, 3).Value = lstJobCard.Value Then
  • @tigeravatar 我试过了,但还是不行。 Excel 说没有一个单元格与我的 lstJobCard.Value 匹配,即使该列表框是从范围填充的

标签: excel vba listbox userform populate


【解决方案1】:

我想通了。与其说该单元格的值是否等于 lstJobCard.Value,不如说“喜欢”。例如

Private Sub cmdAdd_Click()

LastRow = Cells(Rows.Count, 2).End(xlUp).Row

For j = 2 To LastRow
    If Cells(j, 2).Value = cmbStage.Value Then
        For k = 2 To LastRow
            If Cells(k, 3).Value Like lstJobCard.Value Then
                Cells(k, 4).Value = lstJobCard.Value & ": " & txtNote.Value
            End If
        Next k
    End If
Next j
Unload Me

End Sub

仍然不知道为什么,但它现在可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多