我正在尝试从具有最新日期的工作簿中选择一个工作表。每个工作表的日期都在相同的空间中,否则它是空白或文本,因此我认为永远不应该评估为大于整数或日期格式化的值。一旦我找到该表,我想获取特定数据并使用它。我的问题是选择正确的表格。这是代码:
Dim wksht As Worksheet
Dim maxsheet As Worksheet
Dim currentdate as Integer
Dim maxdate as Integer
'go through each worksheet. compare the value of current date extracted from each sheet
'to maxdate. If currentdate > maxdate maxdate = currentdate.
'remember the worksheet for maxdate as maxsheet.
maxdate = 0
For Each wksht In ActiveWorkbook.Worksheets
With wksht
currentdate = wksht.Range("B1").Value
If currentdate > maxdate Then
maxsheet = wksht
maxdate = currentdate
End If
End With
Next wksht
发生了什么事?我得到的错误是“'91':对象变量或未设置块变量。”我真的不了解帮助部分或我如何解决它。
再次查看代码我预见到另一个问题,一旦我将纸张存储起来处理工作表。我可以直接使用maxsheet.select吗?
答案 0 :(得分:1)
两件事:
您正在初始化currentdate
和maxdate
integer
;使用date
数据类型。
您有maxsheet = wksht
,应该是set maxsheet = wksht
。
至于您的其他问题,是的,您可以使用maxsheet.select
,指定范围(例如maxsheet.range("B4")
),具体取决于您需要检索的数据。
答案 1 :(得分:1)
循环逻辑对我来说很好看。你没有使用With wksht
/ End With
,这是正确的。要使用,它将是:
For Each wksht In ActiveWorkbook.Worksheets
With wksht
currentdate = .Range("B1").Value ` <~~~~ This guy right here
If currentdate > maxdate Then
maxsheet = wksht
maxdate = currentdate
End If
End With
Next wksht
现在,在不了解您的工作表的情况下,我不确定我是否可以专门回答您的问题,但是,我会将逻辑重做为:
Dim currentdate as Date
Dim maxdate as Date
For Each wksht In ActiveWorkbook.Worksheets
if IsDate(wksht.Range("B1").Value) then
currentdate = CDate(wksht.Range("B1").Value)
If currentdate > maxdate Then
set maxsheet = wksht
maxdate = currentdate
End If
end if
Next wksht
http://p2p.wrox.com/access-vba/11341-convert-text-date-time-access.html
答案 2 :(得分:1)
如果您将currentdate
和maxdate
变量更改为date
类型并将maxsheet
更改为string
类型,请将行更改为{{1你将捕获页面的名称。然后,您可以使用maxsheet = wksht.name
引用该页面。
答案 3 :(得分:0)
Dim maxdate as Date
Dim wksht as Worksheet
Dim currentdate as Date
dim maxsheet as string
maxdate = 0
For Each wksht In ActiveWorkbook.Worksheets
If IsDate(wksht.Range("B1").Value) Then
currentdate = CDate(wksht.Range("B1").Value)
If currentdate > maxdate Then
maxsheet = wksht.Name
maxdate = currentdate
End If
End If
Next wksht
感谢您的帮助。这是工作代码