gpt4 book ai didi

excel - "Application"作为 Excel VBA 中的默认对象呢?

转载 作者:行者123 更新时间:2023-12-04 19:46:23 25 4
gpt4 key购买 nike

我刚刚在 Excel VBA 中编写了这个简单的宏,用于合并一组选定的单元格:

Sub Macro_Merge()
Dim Temp As String
Dim S As Variant

Temp = ""
For Each S In Selection
If Temp = "" Then
Temp = CStr(S.Value)
Else:
Temp = Temp + "," + CStr(S.Value)
End If
Next

Selection.Merge
Selection.Value = Temp
Selection.VerticalAlignment = xlTop

End Sub
这很好用,但我总是看到那个烦人的对话框,警告我在合并时丢失数据(这正是我在宏中试图避免的)。
我可以摆脱那个对话框,配置 ApplicationDisplayAlerts属性(property):
Application.DisplayAlerts = False
Selection.Merge
Selection.Value = Temp
Application.DisplayAlerts = True
这工作正常。
所以,作为 Application是默认对象,我尝试清理我的代码,如下:
DisplayAlerts = False
Selection.Merge
Selection.Value = Temp
DisplayAlerts = True
如您所见,我只是省略了提及 Application目的。这是允许的,我过去做过。 (如果不是在 VBA 中,那么可能是 Delphi 吗?)
...但令我惊讶的是,对话框再次出现(尽管按 F1 将我带到 the official "Application.DisplayAlerts" documentation )。
这给我留下了一个简单的问题:
如果一个简单的 DisplayAlerts = ...不等于 Application.DisplayAlerts = ...再说了,这是什么意思,我该如何使用它?
供您引用,我正在使用 Excel-365。

最佳答案

DisplayAlerts是一个未声明的变量。
某些 Application属性和方法可以(有效地)具有 Application省略:

  • ActiveCell , ActiveSheet , ActiveWorkbook , ActiveWindow , Addins , Charts , Selection
  • Calculate , Evaluate , Intersect , Run , Union

  • (但请参阅 this answer 为什么/如何工作):
    bool 属性,例如 DisplayAlerts ( EnableEventsScreenUpdating 等)不属于上述类别。
    避免落入此类陷阱的黄金法则是使用 Option Explicit在编写宏时。

    关于excel - "Application"作为 Excel VBA 中的默认对象呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70972141/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com