我有一个 Excel 工作表,其中 A 列中的每个单元格都是按顺序排列的日期。
A
----------
1/01/2016
...
12/31/2019
Run Code Online (Sandbox Code Playgroud)
如何返回找到特定日期的行号?
像这样的东西:
Private Sub btnSubmit_Click()
today = Date
row_today = ThisWorkbook.Sheets("Sheet1").Range("A:A").Find(What:=today, _
LookIn:=x1Values)
MsgBox row_today
End Sub
Run Code Online (Sandbox Code Playgroud)
在子程序开始时声明变量是一种很好的做法,在这种情况下,它会帮助您找到错误。另一个问题是.Find当前正在返回一个范围,您希望在其中查看该范围的行号。我将在下面解释如何解决这两个问题:
在您要返回的代码中:
today 作为约会和row_today 作为长整数编辑:我之前建议将 row_today 声明为integer. 如果行号大于 32,767,这将产生错误;所以我修改为long,可以轻松处理超过 200 万行
但您目前正在返回:
today 作为变体和 row_today 作为变体您可以像这样声明它们:
Dim today As Date
Dim row_today As Long
Run Code Online (Sandbox Code Playgroud)
在这行代码中:
row_today = ThisWorkbook.Sheets("Sheet1").Range("A:A").Find(What:=today, LookIn:=x1Values)
Run Code Online (Sandbox Code Playgroud)
首先,你有一个错字-它应该是LookIn:=xlValues不LookIn:=x1Values
其次,您要返回包含您要查找的日期的单元格范围。有关该.Find方法的更多信息,请在此处阅读MSDN 文档。
要返回行号,您只需要.Row像这样在末尾添加:
row_today = ThisWorkbook.Sheets("Sheet1").Range("A:A").Find(What:=today, LookIn:=x1Values).Row
Run Code Online (Sandbox Code Playgroud)
所以你的最终代码应该是这样的:
Private Sub btnSubmit_Click()
Dim today As Date
Dim row_today As Long
today = Date
row_today = ThisWorkbook.Sheets("Sheet1").Range("A:A").Find(What:=today, LookIn:=xlValues).Row
Debug.Print row_today
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27833 次 |
| 最近记录: |