gpt4 book ai didi

vba - 将列中单元格的值与用户输入的 ComboBox 值进行比较

转载 作者:行者123 更新时间:2023-12-02 16:39:15 25 4
gpt4 key购买 nike

我无法将列中单元格的值与组合框值输入进行比较。

我有 2 个工作簿 tests(包含 ComboBox2)和 test1(包含其单元格与 ComboBox2.value 进行比较的列)

我有一个 for 循环来实现这一点。

For i = 1 To LastRow

If wkbSource.Worksheets(sheet_no).Cells(i, 1) = ComboBox2.Value Then
'do something
End If
Next i

我已经调试了代码,并且我了解到 if statement 即使在匹配后也不会执行。

我该如何修复它?

编辑:

此外,我想知道如何添加两个单元格值,因为直接添加它会显示不正确的输出。例如

wkbSource.Worksheets(sheet_no).Cells(i, 1) + wkbSource.Worksheets(sheet_no).Cells(i, 3)

最佳答案

这(再次)归因于Variant Comparison Curse 。特别请参阅该问题的“更新 4”

If wkbSource.Worksheets(sheet_no).Cells(i, 1) = ComboBox2.Value Then

这会比较两个Variant。但是,当单元格包含数字且未明确格式化为 Text 时,输入时前面不会带有 '。 Excel 会将其视为数字,因此它的 .Value 将是数字 Variant。另一方面,Combobox2.Value 返回了一个文本Variant,因此比较失败!

当比较两个Variant变量时,这些操作将失败:

  2 = "2"    ' False
3 > "2" ' False

因此,针对您的特定情况的解决方案是使用控件和单元格的 .Text 属性强制比较文本。例如,您可以按照以下方式对与您的查询匹配的单元格进行求和:

For i = 1 To LastRow
If Trim(wkbSource.Worksheets(sheet_no).Cells(i, 1).Text) = Trim(ComboBox2.Text) Then
'do something
if IsNumeric(wkbSource.Worksheets(sheet_no).Cells(i, 1).Value2) Then _
mySum = mySum + wkbSource.Worksheets(sheet_no).Cells(i, 1).Value2
End If
Next i

关于vba - 将列中单元格的值与用户输入的 ComboBox 值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44355673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com