0

如何从列表框中的列中选择最大值,并将该值显示在同一表单的文本框中?列表框本身由依赖于用户输入的查询填充,因此它的值事先是未知的。

我可以按值对列表框进行排序并选择第一个值,但它已经在另一列上按日期排序,用于不同的目的。我想知道的是最大值出现在第 2 列中的日期。

下一步是将在该日期之前出现的第 4 列中的所有值显示为空白或 N/A。

4

1 回答 1

0

您可能会发现以下 VBA 代码很有帮助。它扫描.Column数据中的值以查找名为 的列表框List0,例如...

2013-04-18 | 123
2013-04-17 | 77
2013-04-16 | 345
2013-04-15 | 34

...找到与列表框第二列中最大值对应的日期(第一列),并将该日期放入名为 的文本框中Text3。请注意,该CompareNumeric标志控制比较是基于字符串(“77”获胜)还是基于数字(345 获胜)。

Private Sub Command2_Click()
Const DateCol = 0  '' column numbers start with 0
Const MaxCol = 1  '' second column has column index of 1
Const CompareNumeric = True  '' convert strings to numbers for finding maximum

Dim RowIdx As Long, MaxItem As Variant, MaxIdx As Long, CurrItem As Variant, NewMaxFound As Boolean

MaxIdx = -1
MaxItem = Null
For RowIdx = 0 To Me.List0.ListCount - 1
    CurrItem = Me.List0.Column(MaxCol, RowIdx)
    If CompareNumeric Then
        CurrItem = Val(CurrItem)
    End If

    If IsNull(MaxItem) Then
        NewMaxFound = True  '' first one
    Else
        NewMaxFound = (CurrItem > MaxItem)
    End If
    If NewMaxFound Then
        MaxItem = CurrItem
        MaxIdx = RowIdx
    End If
Next
If MaxIdx >= 0 Then
    Me.Text3.Value = Me.List0.Column(DateCol, MaxIdx)
End If
End Sub
于 2013-04-22T21:28:55.537 回答