使用"Application.DisplayAlerts = False"会给出"找不到方法或数据成员"编译错误



我在 Access 中有一个模块来格式化 Excel 电子表格中的单元格。

Sub FormatData()
Workbooks.Open FileName:="C:Usersjohn.doeDocumentsscriptsappsallowWeekly_Cash_Trending"
Workbooks("Weekly_Cash_Trending.xlsx").Activate

Columns("C:C").Select
Selection.NumberFormat = "$#,##0"
Range("A1").Select
ActiveWorkbook.SaveAs FileName:="C:Usersjohn.doeDocumentsscriptsappsallowWeekly_Cash_Trending"
End Sub

它可以工作,但它会弹出一个弹出窗口以确认保存文件。

卓越消息

当我更改代码以使用"应用程序.显示警报"时

Sub FormatData()
Application.DisplayAlerts = False
Workbooks.Open FileName:="C:Usersjohn.doeDocumentsscriptsappsallowWeekly_Cash_Trending"
Workbooks("Weekly_Cash_Trending.xlsx").Activate

Columns("C:C").Select
Selection.NumberFormat = "$#,##0"
Range("A1").Select
ActiveWorkbook.SaveAs FileName:="C:Usersjohn.doeDocumentsscriptsappsallowWeekly_Cash_Trending"
Application.DisplayAlerts = True
End Sub

我收到以下错误:找不到方法或数据成员

找不到方法或数据成员错误

我是 VBA 编码的新手(显然(,任何人都可以帮助我解决这个问题吗?谢谢!

  • 您正在 Access 中对此进行编码,所以我的理解是,在此上下文中ApplicationAccess.Application(而不是Excel.Application(——并且Access.Application没有DisplayAlerts成员(与 Excel 不同(。
  • 您似乎正在调用Workbook.SaveAs方法来保存工作簿本身。如果需要,请使用Workbook.Save(这也意味着您无需切换DisplayAlerts(。或者,Workbook.Close有一个 SaveChanges 参数,您可以将TrueFalse传递给该参数。

我认为下面的代码(我在 Access 中编写和测试(应该可以完成您所追求的。

Option Compare Database
Option Explicit
Sub FormatData()
    With New Excel.Application ' Add reference to Excel Object Model for early binding
        '.Visible = True ' Uncomment if you want to see it happening
        With .Workbooks.Open(FileName:="C:Usersjohn.doeDocumentsscriptsappsallowWeekly_Cash_Trending")
            .Worksheets(1).Range("C:C").NumberFormat = "$#,##0"
            .Close True ' Passing True here means we want to save changes as we close the workbook
        End With
        .Quit
    End With
End Sub

根据您的代码,我假设您已经在 Access for Excel 的对象库中添加了一个引用。如果没有,请在 Access 中打开 VB 编辑器,然后Tools > References > Scroll down in the list to Microsoft Excel 16.0 Object Library (or something like that) > Tick it > OK

我假设您要更改第一个工作表上单元格的数字格式。如果该工作表有名称,最好按名称引用它(而不是像我那样按索引(。

最新更新