1
我試圖在單元格中的值發生更改時應用宏。我有這個代碼在儀表盤表:在單元格值更改上應用宏:1004錯誤
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Target.Worksheet.Range("FilterChoice")) Is Nothing Then Call ApplyDashboardFilter
End Sub
觸發工作正常,並在之後執行的宏,但不知道爲什麼我上了高級過濾器功能的錯誤:「應用程序定義或對象定義的錯誤「
Option Explicit
Sub ApplyDashboardFilter()
Dim rng As Range
Dim filterName As String
Dim tableName As String
filterName = "Filter" & Replace(Sheets("Dashboard").Range("FilterChoice").Value, " ", "")
tableName = filterName + "[#All]"
Sheets("Dashboard").Activate
Sheets("Dashboard").Columns("A:AN").Cells.Clear
Sheets("Critical Flows").Range("ClosingFlows[#All]").AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Sheets(filterName).Range(tableName) _
, CopyToRange:=Sheets("Dashboard").Range("A1"), Unique:=False
Set rng = Range(Range("A1"), Range("A1").CurrentRegion)
ActiveSheet.ListObjects.Add(xlSrcRange, rng, , xlYes).Name = _
"Flows" & filterName
ActiveSheet.ListObjects("Flows" & filterName).TableStyle = "TableStyleMedium3"
If Sheets("Dashboard").Range("FilterChoice").Value = "Orchestrated" Then
Call ApplyFlormulaRunbookName
End If
End Sub
宏在Dashboard表單上的按鈕觸發時工作。
我錯過了什麼嗎?
由於提前,
編輯:
好,奇怪的事情發生了。我休息一會兒就重新打開了文件,它工作了。 我懷疑ActiveSheet發生了什麼和/或與另一個工作簿衝突,因爲我正在玩2個其他工作簿和總計10張。
可能嗎?
這樣的聲音是爲什麼你應該引用正確的工作表而不是ActiveSheet的一個例子。它看起來像'儀表板'是活動工作表 - 所以傳遞給一個變量並使用它。例如。 - 'Set wrkSht = Thisworkbook.worksheets(「Dashboard」):wrksht.Columns(「A:AN」)。ClearContents:Set rng = wrksht.Range(「A1」)。CurrentRegion' etc ..... –
我想這可能是問題所在。由於我無法測試它,我認爲這是一條路。我正在根據您的答案修改我的代碼,謝謝! – FaXaq