我會盡量保持我的查詢簡單,我不認爲我的代碼過於相關。運行時1004錯誤,每秒執行一次代碼
我有一個改變工作表上的值的子,其中一些改變trip工作表改變事件監聽器。所以這可能有點低效,但不應該給我帶來任何問題。
這裏是擦:每隔一段時間我運行我的第一個宏 - 改變值 - 我的工作表行爲完美。每次我都遇到1004運行時錯誤。
當我遇到錯誤我結束代碼執行。再次做同樣的事情,它工作,失敗,工作,失敗等
我想有一些VBA或Excel設置,我需要手動清除,以避免運行時錯誤。但我不知道它可能是什麼。我也可以重寫我的程序以避免觸發事件監聽器的單元,但我真的很想知道發生了什麼。
編輯:確定這裏是一些代碼,我用這個由客戶找到我的發票的列表,並顯示一個窗體,選擇發票顯示:
Sub Look_for_invs()
Dim cell, invDB As Range
Dim srch_rng As Range
Set invDB = Range("Invoice_DB")
invDB.AdvancedFilter xlFilterCopy, Range("inv_lookup_crit"), Range("inv_lookup_result"), True
Dim length As Integer
On Error GoTo exerr
length = Int(WorksheetFunction.CountA(Range("inv_lookup_result_list").Columns(1)))
Range("inv_lookup_result_list").Cells(1, 1).Offset(length, 0).Value = "NEW"
GoTo exok
exerr:
length = 1
Range("inv_lookup_result").Cells(1, 1).Offset(length, 0).Value = "NEW"
exok:
Set srch_rng = Range("inv_lookup_result_list")
With InvoiceSelection.InvListBox
.ColumnCount = 4
.ColumnHeads = True
.RowSource = "inv_lookup_result_list"
End With
Worksheets("Invoice Entry").Select
InvoiceSelection.Show vbModeless
End Sub
下面是用戶窗體的代碼,這需要發票號碼並將這些值放入我的發票模板中,在我看來,我無法在用戶表單處於活動狀態時訪問Range對象的成員。我因爲發帖的問題,試圖看看是否能夠幫助殘疾人的活動,它沒有:
Private Sub InvListBox_Click()
Dim invnum, invitems_cnt, invitem As Integer
Dim accnum As String
Dim inv_arrival, inv_depart As Date
Dim invDB, cell, invoice_lines As Range
Dim inv_ent_sht As Worksheet
With Application
.Calculation = xlCalculationManual
.EnableEvents = False
.ScreenUpdating = False
End With
invnum = InvListBox.Value
accnum = Range("invoice_ent_account")
Set invDB = Range("Invoice_DB")
Set invoice_lines = Range("invoice_lines")
Set inv_ent_sht = Worksheets("Invoice Entry")
clear_inv_sheet
If invnum <> "NEW" Then
'set variables
inv_depart = WorksheetFunction.VLookup(invnum, invDB.Offset(0, 1), 5, False)
inv_arrival = WorksheetFunction.VLookup(invnum, invDB.Offset(0, 1), 4, False)
'transfer header-level invoice details to sheet
Range("inv_inv_num") = invnum
Range("inv_depart") = inv_depart
Range("inv_arrival") = inv_arrival
'find all items relating to invoice lines and move them to invoice lines area of statement
For Each cell In invDB.Columns(2).Cells
If cell.Value = invnum Then
invitem = Application.WorksheetFunction.CountA(invoice_lines.Columns(1)) + 1
invoice_lines.Cells(invitem, 1) = cell.Offset(0, 5)
invoice_lines.Cells(invitem, 2) = cell.Offset(0, 2)
invoice_lines.Cells(invitem, 5) = cell.Offset(0, 6)
invoice_lines.Cells(invitem, 6) = cell.Offset(0, 7)
invoice_lines.Cells(invitem, 7) = cell.Offset(0, 12)
invoice_lines.Cells(invitem, 8) = cell.Offset(0, 13)
End If
Next cell
'invitems_cnt = WorksheetFunction.CountIf(Range("invoice_DB").Columns(2), invnum)
End If
InvoiceSelection.Hide
With Application
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
您的工作表事件代碼可能在不適當的時間運行。要獲得更好的幫助,您需要**發佈您的代碼。** –
您的代碼是相關的。它會告訴你整個故事爲什麼你會遇到這樣的錯誤。我的猜測是,由於您構建代碼的方式,您會遇到運行時。運行時只有在你想讓excel訪問找不到的東西時纔會發生,或者經常發生。 – L42
有兩個想法:1)'exok:'後面可能需要另一個'On Error ...'語句,否則下面發生的任何錯誤都會跳回來2)如果使用'On Error Goto 0',調試器將停止發生錯誤的行。用它來識別錯誤的行,讓我們知道它是哪一個! –