Excel 单元格的值未被识别为等于列表框项,即使它是
我的代码无法识别单元格值是否等于列表框项,即使它是。一切都完美地工作,直到它开始循环,然后它不考虑SelItem与单元格值相同的值。我单独运行了这个循环,没有将它作为userformsub的一部分,在这里它工作得很好。 我在“局部变量”窗口中查找,SelItem是一个变量/字符串变量,我想它应该与单元格值兼容 请参阅下面的代码Excel 单元格的值未被识别为等于列表框项,即使它是,excel,vba,loops,userform,Excel,Vba,Loops,Userform,我的代码无法识别单元格值是否等于列表框项,即使它是。一切都完美地工作,直到它开始循环,然后它不考虑SelItem与单元格值相同的值。我单独运行了这个循环,没有将它作为userformsub的一部分,在这里它工作得很好。 我在“局部变量”窗口中查找,SelItem是一个变量/字符串变量,我想它应该与单元格值兼容 请参阅下面的代码 Sub CommandButton3_Click() Dim SelectedItems As String, LastRow As Long Dim selItem
Sub CommandButton3_Click()
Dim SelectedItems As String, LastRow As Long
Dim selItem As Variant, selItems As Variant
For i = 0 To CountryList.ListCount - 1
If CountryList.Selected(i) = True Then
SelectedItems = SelectedItems & CountryList.List(i) & vbNewLine
End If
Next i
If SelectedItems = "" Then
MsgBox "Please select minimum one country"
Else
CountrySelection.Hide
'Create New Sheet
Set WS = Sheets.Add(after:=Sheets(Worksheets.Count))
WS.Name = "Country Selection"
'If Sheet is VeryHidden
Dim WasHidden
Application.ScreenUpdating = False
If Sheets("Country Split").Visible = xlSheetVeryHidden Then
Sheets("Country Split").Visible = xlSheetVisible
WasHidden = True
End If
Sheets("Country Split").Select
Cells.Select
Selection.Copy
Sheets("Country Selection").Select
Range("A1").Select
ActiveSheet.Paste
'Format As Table
Set StartCell = Range("D10")
StartCell.CurrentRegion.Select
ActiveSheet.ListObjects.Add(xlSrcRange, , , xlYes).Name = _
"Country_Selection"
producttable = ActiveSheet.ListObjects("Country_Selection")
If WasHidden Then Sheets("Country Split").Visible = xlSheetVeryHidden
LastRow = ActiveSheet.Range("F1").SpecialCells(xlCellTypeLastCell).Row
SelectedItems = Left(SelectedItems, Len(SelectedItems) - 1)
selItems = Split(SelectedItems, vbNewLine)
在这里,它将If Range(“F”&i).Value=selItem读作不同的东西,即使它是
For Each selItem In selItems
For i = 11 To LastRow
If Range("F" & i).Value = selItem Then Rows(i).Hidden = True
Next i
Next
End If
For i = 11 To LastRow
If Rows(i).Hidden = True Then Rows(i).EntireRow.Delete
Next
Unload CountrySelection
End Sub
检查数据类型,如果将字符串与int进行比较,则会有所不同,例如字符串
“1”
将不等于int1
请尝试如果CStr(Range(“F”&i).value)=CStr(selItem),则必须能够检查它。在此行后放置一个停止符,查看代码是否停在该行上…'''''''''CStr(Range(“F”&i).value)=CStr(selItem)''''。它仍然直接进入´´´´´´下一个i´´´´´,并且仍然将值声明为相同。据我所知,默认数据类型是Variant?因为它应该比较变量和变量(Cell.value)