VBA宏,返回符合条件的项目列表

时间:2014-06-18 02:08:56

标签: excel vba excel-vba

我正在尝试在Excel 2010/2013中创建一个UserForm,它将查看项目列表并根据我提供的数字返回完整列表。

此处列出的内容如下: See Example (图片托管在Imgur上)

如果图片无法加载,这就是一个嗤之以鼻......

位置-----标题-----过去的日子 A2:0001 | B2:电影1 | C2:32
A3:0001 | B3:电影2 | C3:18
A4:0001 | B4:电影3 | C4:10
A5:0004 | B5:电影1 | C5:32
A6:0007 | B6:电影1 | C6:32
A7:0007 | B7:电影2 | C7:18
A8:0009 | B8:电影1 | C8:32
A9:0014 | B9:电影1 | C9:32

我有一个userform,它将返回列表中的第一个项目,但不会返回完整列表。理想情况下,我希望远离使用列表框,主要是因为目标是能够复制完整列表中的项目。

我已尝试过Index()公式,但我不知道如何将其转移到VBA中工作。
你有任何帮助会很棒!

1 个答案:

答案 0 :(得分:1)

我已经为您写了这封信,如果您的位置值在A列中给出,则B中的标题和C中的过去日期应该有效:

Private Sub SUBMITBUTTON_Click()

Dim counter As Integer, TITLELIST(), DAYSPAST(), fullString As String
fullString = ""

If LOCATIONTEXTBOX.Text = "" Then
    MsgBox "Please input a location"
    Exit Sub
End If

For Each Cell In ActiveSheet.UsedRange.Cells
    If Cell.Value = LOCATIONTEXTBOX.Text Then
        counter = counter + 1
    End If
Next

ReDim TITLELIST(counter)
ReDim DAYSPAST(counter)
counter = 0

For i = 1 To Cells(1, 1).End(xlDown).Row
    If Cells(1, i).Value = LOCATIONTEXTBOX.Text Then
        TITLELIST(counter) = Cells(i, 2).Value
        DAYSPAST(counter) = Cells(i, 3).Value
        fullString = fullString & CStr(TITLELIST(counter)) & "," & CStr(DAYSPAST(counter)) & ","
        counter = counter + 1
    End If
Next

MsgBox fullString
Range("H8").Value = fullString

End Sub

如果您更改了SUBMITBUTTON和LOCATIONTEXTBOX的名称,那么它应该适用于您的用户表单。