我的問題對我來說非常奇怪。我在搜索和閱讀其他的VBA問題,這些問題在我看來與我的問題更相似。我不知道。
用例: 該宏應該激活/選擇活動作業簿中的一個作業表。然后在該活動作業表中找到一個日期/字串。如果找到了,它將把這個范圍保存到一個變數中。如果該變數是空的,那么宏應該停止。
問題:如果在宏開始時沒有選擇/激活作業表,那么.find()就不能作業。每次我都得到一個 "沒有 "的回復。如果作業表在宏啟動時被選中/激活(在我的顯示幕上顯示),那么它就能作業。
我在另一臺電腦上也檢查了這個問題。但它也發生在那里......
Dim rngFirst As Range
Dim rngNext As Range
Dim rngArea As Range
Set rngArea = Range("A:Z")
Dim defaultValue As Date, insertedDate As Date
defaultValue = Format(Date, "dd.mm.yyyy")
insertedDate = Application.InputBox(message, title, Format(defaultValue, "dd.mm.yyyy"/span>), Type:=1)
ActiveWorkbook.Sheet("mySheet").激活
Do。
If rngFirst Is Nothing Then
Set rngFirst = rngArea.Find(What:=insertedDate, After:=rngArea(1) '問題是從這行代碼開始的。我得到的答案是 "沒有"。
Set rngNext = rngFirst
If rngNext Is Nothing Then
MsgBox "尋找會議日期有問題。請檢查!" Chr(10) "Macro將在此結束。"
Exit Sub
End If
Else
'Do something with what was found'。
'查找表單中的下一個條目。
Set rngNext = rngArea.Find(What:=insertedDate, After:=rngNext)
If rngNext.Address = rngFirst.Address Then Exit Do
結束 若
回圈 回圈
注意:不幸的是,我的作業電腦上沒有管理員。但我認為這并沒有什么區別。
uj5u.com熱心網友回復:
它已經解決了。這是一個錯誤的思維方式... 我的問題下面的評論解釋了解決方案。
下面是作業代碼:
Dim rngFirst As Range
Dim rngNext As Range
Dim rngArea As Range
Set rngArea = Sheets("mySheet").Range("A:Z") 'address solution here)
Dim defaultValue As Date, insertedDate As Date
defaultValue = Format(Date, "dd.mm.yyyy")
insertedDate = Application.InputBox(message, title, Format(defaultValue, "dd.mm.yyyy"), Type:=1)
做
If rngFirst Is Nothing Then
Set rngFirst = rngArea.Find(What:=insertedDate, After:=rngArea(1) '問題是從這行代碼開始的。我得到的答案是 "沒有"。
Set rngNext = rngFirst
If rngNext Is Nothing Then
MsgBox "尋找會議日期有問題。請檢查!" Chr(10) "Macro將在此結束。"
Exit Sub
End If
Else
'Do something with what was found'。
'查找表單中的下一個條目。
Set rngNext = rngArea.Find(What:=insertedDate, After:=rngNext)
If rngNext.Address = rngFirst.Address Then Exit Do
結束 若
回圈 回圈
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/307764.html
標籤:
