vba - vba:日期数组上的 lbound 错误
问题描述
我有一个包含许多日期的“Datevarie”动态矩阵。
在例程中的某个时刻,我必须从 DateVarie 中提取最低值。
问题是当我使用 Lbound 函数时,我总是返回值 1 而不是日期(例如“01/01/2018”)。
我认为数组中的数据输入正确,因为我一步步调试了几次。
如何在无需在工作表上报告数据并订购它们的情况下解决问题?我必须使用 FOR ... NEXT 吗?日期可以是 2-3,也可以是几十个
Type interventi
...
data as date
...
public Intervento as interventi
public rs1 as adodb.recordset
...
Sub TheSubWithProblem(...)
...
dim Datevarie() as date
..
redim preserve etc..
DateVarie(k)=format(RS1!DataI,"dd/mm/yyyy") '<<<< correct
...
Intervento.data=lbound(datevarie) '<<<< always return 1
...
解决方案
问题是当我使用 Lbound 函数时,我总是返回值 1 而不是日期(例如“01/01/2018”)。
LBOUND
和UBOUND
函数返回数组的下限和上限,而不是数组中的最小值和最大值。
VBA 中的数组默认以 0 为底,因此初始化的数组通常应LBound
为 0。
如果您想获得最低或最高值,那么您需要实现自己的算法来做到这一点(例如,for/next 循环),或者如果这是一个单维数组,我们可以潜在地使用ArrayList
一个对象有(除其他外)一种Sort
方法:
Set d = CreateObject("System.Collections.ArrayList")
Dim dateVarie As Variant
Dim i As Long, m As Long, day As Long
For i = 1 To 100
m = Application.WorksheetFunction.RandBetween(1, 12)
day = Application.WorksheetFunction.RandBetween(1, 30)
d.Add (DateValue(DateSerial(2018, m, day)))
Next
'Preserve your un-sorted array, if needed:
ReDim dateVarie(d.Count - 1)
dateVarie = d.ToArray()
Msgbox "The first value is: " & dateVarie(0)
d.Sort ' Sorts the arraylist:
MsgBox "The lowest value is: " & (d(0))
推荐阅读
- c# - 身份观在哪里?
- angularjs - Ionic 3 构建错误:“没有服务器来服务请求”
- spring - 如何准确运行 24 小时的 Spring Boot 应用程序?
- javascript - 节点 Js 错误 Module.js 549
- css - 在android mobile上滚动后,位置固定表结构内的按钮无法单击
- sql - BigQuery SQL Select 返回键值对而不是两个单独的列
- bootstrap-4 - Infinite Scroll + Bootstrap 4 Grid 无法正常滚动
- python - 如何在张量流中循环遍历张量中的每一行
- powershell - 在远程机器中使用 power shell 创建计划任务
- function - ActionScript 3:curry 函数如何工作?