首页 > 解决方案 > Excel-VBA - 从按钮添加工作表是有效的,但不是从宏

问题描述

我想知道,我可以在调用 Sub 方法的单元格中使用宏添加 Excel 表吗?从按钮调用相同的代码效果很好。

我的代码崩溃了一个.Range("A1") = "Col1"美妙的错误信息Application-defined or Object-defined error。我读过我的细胞需要完全合格。所以我尝试用 替换ThisWorkbookWorkbooks("MyExcelAddins.xlam")但没有成功。

是不是因为当我在一个单元格中时,应用程序的状态不一样?我想添加工作表不起作用...

谢谢你。

我的代码:

Application.ScreenUpdating = False
Application.DisplayAlerts = False

With ThisWorkbook.Sheets.Add
    .Range("A1") = "Col1"
    .Range("B1") = "Col2"
    .Range("C1") = "Col3"
    .Range("D1") = "Col4"
    .Range("A2") = filter1
    .Range("B2") = filter2
    .Range("C2") = filter3
    .Range("D2") = filter4

    Workbooks("MyExcelAddIns.xlam").Sheets("MyDataSheet").Range("tblMyDataToFilter").CurrentRegion.AdvancedFilter xlFilterInPlace, .Range("A1:D2")
    .Delete
End With

Application.ScreenUpdating = True
Application.DisplayAlerts = True

编辑
澄清 1:我所说的“在调用 Sub 方法的单元格中使用宏”的意思是=MyFunc(A1;A2;A3;A4).
澄清 2:是的,我知道我的代码正在立即删除工作表。我希望能够在不循环遍历每一行的情况下过滤表,我在这个答案中找到了这种技术:VBA (Excel): Find Based on Multiple Search Criteria without Looping

最后,我将这篇文章标记为“已回答”,因为 David Zemens 的评论。

在执行 UDF 工作表函数调用期间,通常禁止更改 Excel 环境。

这是我一直在寻找的答案。感谢你们。

标签: vbaexcel

解决方案


推荐阅读