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