将列中单元格的值与用户input的ComboBox值进行比较
我无法将列中单元格的值与combobox值进行比较。
我有2个工作簿testing (包含ComboBox2)和testing1 (包含一个列的单元格与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
我已经debugging了代码,我明白if
statement
不匹配,甚至在比赛后。
我该如何解决?
编辑:
另外我想知道如何添加两个单元格值,因为直接添加它显示不正确的输出。 例如
wkbSource.Worksheets(sheet_no).Cells(i, 1) + wkbSource.Worksheets(sheet_no).Cells(i, 3)
这是由于(再一次) 变形比较诅咒 。 特别要看这个问题的“更新4” 。
If wkbSource.Worksheets(sheet_no).Cells(i, 1) = ComboBox2.Value Then
这比较了两个Variant
。 但是,如果单元格包含一个数字,而且没有明确地格式化为Text
,则在input时不会在前面加上'
。 Excel将它视为一个数字,所以它的.Value
将是一个数字Variant
。 另一方面, Combobox2.Value
重新调整了文本Variant
,所以比较失败!
比较两个Variant
variables时,这些操作将失败:
2 = "2" ' False 3 > "2" ' False
因此,在特定情况下的解决scheme是强制使用控件的.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