简体   繁体   English

如果单元格值包含特定字符串,则添加到列表框

[英]Add to Listbox if cell value contains specific string

I am trying to add data to a Listbox on a Userform, based on the value of the the Cell in column C of the range that is searched.我正在尝试根据搜索范围的 C 列中单元格的值将数据添加到用户窗体上的列表框。 If the cell in column C contains a certain string I would like it to be added to the Listbox.如果 C 列中的单元格包含某个字符串,我希望将其添加到列表框。

The below code is as far as I have got but it is returning an empty Listbox with no error.下面的代码是我得到的,但它返回一个没有错误的空列表框。

Private Sub OptionButton12_Click()

Dim I As Integer
Dim lastRow As Integer
Dim searchString As String

searchString = "LISTBOXENTRY"

With ThisWorkbook.Sheets("Sheet1")
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With

Plybooks.ListBox1.Clear
For I = 1 To lastRow
    If Cells(I, 3).Value = searchString Then
        Plybooks.ListBox1.AddItem Range("A" & I)
    End If
Next I

End Sub

Try using the script below and please let me know if it works!尝试使用下面的脚本,请让我知道它是否有效!

based on your script above, I assumed some of the dataframe dimensions.根据您上面的脚本,我假设了一些数据框维度。 please let me know if it is not correct so I can tweak it.如果它不正确,请告诉我,以便我可以对其进行调整。

I assumed you are working on first sheet (sheets(1)), and col C is the column you are using for the value check against the "searchString" variable.我假设您正在处理第一张工作表 (sheets(1)),col C 是您用于针对“searchString”变量进行值检查的列。 (if true, append the value in listbox1) (如果为真,则追加 listbox1 中的值)

Thanks谢谢

Private Sub OptionButton12_Click()

Dim lastRow As Integer
Dim searchString As String
Dim wb As Workbook
Dim sRng As Range
Dim cel As Range

'assign current wb into wb workbook object
Set wb = ThisWorkbook

'assign str you want to search into variable
searchString = "LISTBOXENTRY"

'find last row number in colC (3) using crow function. (assuming you want to do a check on every cell listed in column C)
lastRow = crow(1, 3)

plybooks.listbox1.Clear

'assign range object using dataframe dimensions based on row 1 col C (lbound), to lastrow col3 (ubound)
With wb.Sheets(1)

    Set sRng = .Range(.Cells(1, 3), .Cells(trow, 3))
    
End With

'loops through each cel
For Each cel In sRng

    If cel.Value = searchString Then
        
        'adds item  into listbox1 if conditional statement is True
        plybooks.listbox1.AddItem Item:=cel.Value
    
    Else
    End If

Next cel

End Sub


Private Function crow(s As Variant, c As Integer)

    crow = Sheets(s).Cells(Rows.Count, c).End(xlUp).Row

End Function

Added cell values in ranges over multiple sheets if cell contains certain value, using the following:如果单元格包含特定值,则在多个工作表的范围内添加单元格值,使用以下内容:

Public Sub PlybookListbox()

'Clear fields before start
Plybooks.ListBox1.MultiSelect = 0
Plybooks.ListBox1.Clear
Plybooks.ListBox1.Value = ""
Plybooks.ListBox1.MultiSelect = 2

Dim AllAreas(2) As Range, Idx As Integer, MyCell As Range, TargetRange As Range
Dim lastrowFrontWing As Long
Dim lastrowNose As Long
Dim lastrowBargeboard As Long

lastrowFrontWing = Worksheets("Front Wing").Cells(Rows.Count, 2).End(xlUp).Row
lastrowNose = Worksheets("Nose").Cells(Rows.Count, 2).End(xlUp).Row
lastrowBargeboard = Worksheets("Bargeboard & SPV").Cells(Rows.Count, 2).End(xlUp).Row

    Set AllAreas(0) = Worksheets("Front Wing").Range("c6:c" & lastrowFrontWing)
    Set AllAreas(1) = Worksheets("Nose").Range("c6:c" & lastrowNose)
    Set AllAreas(2) = Worksheets("Bargeboard & SPV").Range("c6:c" & lastrowBargeboard)

Plybooks.ListBox1.Clear

For Idx = 0 To 2
    For Each MyCell In AllAreas(Idx).Cells
        If InStr(1, MyCell.Value, "(FS)") > 0 Then
            Plybooks.ListBox1.AddItem MyCell.Value
        End If
    Next MyCell
Next Idx

End Sub

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM