如何从列表框中的列中选择最大值,并将该值显示在同一表单的文本框中?列表框本身由依赖于用户输入的查询填充,因此它的值事先是未知的。
我可以按值对列表框进行排序并选择第一个值,但它已经在另一列上按日期排序,用于不同的目的。我想知道的是最大值出现在第 2 列中的日期。
下一步是将在该日期之前出现的第 4 列中的所有值显示为空白或 N/A。
您可能会发现以下 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