Excel 单元格的值未被识别为等于列表框项,即使它是

Excel 单元格的值未被识别为等于列表框项,即使它是,excel,vba,loops,userform,Excel,Vba,Loops,Userform,我的代码无法识别单元格值是否等于列表框项,即使它是。一切都完美地工作,直到它开始循环,然后它不考虑SelItem与单元格值相同的值。我单独运行了这个循环,没有将它作为userformsub的一部分,在这里它工作得很好。 我在“局部变量”窗口中查找,SelItem是一个变量/字符串变量,我想它应该与单元格值兼容 请参阅下面的代码 Sub CommandButton3_Click() Dim SelectedItems As String, LastRow As Long Dim selItem

我的代码无法识别单元格值是否等于列表框项,即使它是。一切都完美地工作,直到它开始循环,然后它不考虑SelItem与单元格值相同的值。我单独运行了这个循环,没有将它作为userformsub的一部分,在这里它工作得很好。 我在“局部变量”窗口中查找,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”
将不等于int
1
请尝试
如果CStr(Range(“F”&i).value)=CStr(selItem),则必须能够检查它。在此行后放置一个停止符,查看代码是否停在该行上…'''''''''CStr(Range(“F”&i).value)=CStr(selItem)''''。它仍然直接进入´´´´´´下一个i´´´´´,并且仍然将值声明为相同。据我所知,默认数据类型是Variant?因为它应该比较变量和变量(Cell.value)