我需要你們幫助我解決這個問題。
背景關系 :
我正在嘗試(努力)為企業提出的每個提議創建一個計數器,以了解每個提議的每個簽名日期。所以我創建了一個作業表,作為每個人的基礎,每次他們創建一個時,他們只需要輸入一個數字來識別命題。我已經創建了一個宏來在計數器作業表的最后一個空閑行中寫入新命題的數量和數量。
注意:2 個作業表位于不同的作業簿中。
現在的困難是柜臺紙上有多個簽名。簽名A、B、C、D,他們從來沒有在同一天發生過。
注意:我將根據我們將找到的最終答案為每個簽名創建一個不同的宏。(A 的宏,B 的宏,等等……)
例子:
計時視圖
Charles 創建了一個命題,編號:101,并且只做簽名 A。
約翰創建了一個命題,編號:102,只做簽名 B。
我需要確保它將在 101 號提案行中輸入簽名 A 的日期,并在 102 號提案行中輸入簽名 B 的日期
我的實際位置:
我制作了 2 個作業簿:
—合同(此作業簿包含一個名為“提案”的作業表)
—Chrono(此作業簿包含一個名為“計數器”的作業表)
命題視圖
因此,如果我想在右行中為 101 號提案簽名 A 的日期,我需要在“提案”中找到 G6 的文本/值,并在“計數器”A 列中查找它。如果它功能正確,它必須找到 A9 單元格,然后在 H9 中寫下公式:TODAY()
我做了什么(別笑,我在 3 周前開始使用宏哈哈):
Sub DateSignatureA()
Dim Chrono As Workbook
Dim Contract As Workbook
Dim refCell As Range
Dim refRow As Range
Set Contract = ActiveWorkbook
Set refCell = Range("G6")
Workbooks.Open Filename:="C:\Users\a.leboedec\Documents\S-T_Experimental\Chrono_Experimental"
Set refRow = Range("A:A").Find(G6, [A8], xlValues, , , xlNext)
refRow(0,7).Interior.Color = RGB(200, 200, 500)
refRow(0,7).Formula = "TODAY()"
End Sub
它現在告訴我“運行時錯誤 438”
注意:* *文本* * 是有錯誤的地方
感謝閱讀所有內容的人,我等待您的所有答案。
uj5u.com熱心網友回復:
當你這樣做的時候.Find,把更大的搜索區域放在外面,比如SearchArea.Find( "SearchForThisValue", ... )
使用多個作業簿時,應在使用Range物件時撰寫整個物件路徑。喜歡
Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1")
'Or
Dim WB As Workbook
Set WB = Application.Workbooks("Book1.xlsx")
Dim WS As Worksheet
Set WS = WB.Worksheets(1)
Dim Target As Range
Set Target = WS.Range("A1")
這樣做對您和其他需要閱讀代碼的人來說更清楚。這也避免了從錯誤的作業表或書中獲取值。
這是您的代碼,用完整的物件路徑和固定Find陳述句重寫。
Sub DateSignatureA()
Dim Chrono As Workbook
Dim ChronoWS As Worksheet
Dim Contract As Workbook
Dim ContractWS As Worksheet
Dim refCell As Range
Dim refRow As Range
Set Contract = ActiveWorkbook
Set ContractWS = Contract.ActiveSheet
Set refCell = ContractWS.Range("G6")
Set Chrono = Workbooks.Open(Filename:="C:\Users\a.leboedec\Documents\S-T_Experimental\Chrono_Experimental")
Set ChronoWS = Chrono.ActiveSheet
Set refRow = ChronoWS.Range("A:A").Find( _
refCell.Value, _
After:=ChronoWS.Range("A8"), _
SearchDirection:=xlNext _
)
If Not refRow Is Nothing Then
refRow.Cells(1, 7).Interior.Color = RGB(200, 200, 500)
refRow.Cells(1, 7).Value = Date
End If
End Sub
此外,在使用 時Find,總是找不到任何東西。最好測驗這種情況以避免錯誤。Not refRow Is Nothing測驗以確保Find在嘗試訪問其屬性和方法之前回傳了某些內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/415386.html
標籤:
下一篇:VBA復制單元格與行
