gpt4 book ai didi

excel - excel-vba中应用程序对象属性和方法的范围是什么

转载 作者:行者123 更新时间:2023-12-02 14:25:23 27 4
gpt4 key购买 nike

有人可以让我快速了解一下 Excel-vba 中应用程序方法的范围吗?

我正在尝试关闭 Excel-vba 中的“拖放”操作,以避免在组中过滤掉或折叠的单元格中丢失数据。我知道实现这一目标的唯一方法是这样的

Private Sub Worksheet_Activate() 
Application.CellDragAndDrop = False
End Sub

我的经验是,应用程序方法会影响 Excel 中的一切。因此,当我的 Worksheet_Activate 事件触发时,拖放不仅会在整个事件工作簿中被停用,而且会在当时在我的计算机上运行的每个工作簿中被停用。

我进一步的假设是否正确,关闭“拖放”功能即使在关闭计算机上重新启动的 Excel 后仍会持续存在?它将存储在哪里?

在我只是办公网络中的客户端用户的计算机上使用应用程序方法是否可以节省?或者换句话说,我是否会因为关闭整个网络中的“拖放”功能而冒招致管理员愤怒的风险?

最佳答案

恐怕您的问题没有一个明确的答案。每个应用环境设置必须单独判断。

  • 某些应用程序环境属性是只读的,无法以编程方式更改。这种类型的示例为 Application.ActiveCellApplication.ActiveWindow
  • 某些应用程序成员根本不是属性,而是命令。 Application.Calculate 强制计算周期;它不接受值。
  • 某些应用程序环境设置仅在子操作期间持续存在,并在子操作完成后恢复。这种类型的一个例子是Application.DisplayAlerts,它可以暂时关闭烦人的确认消息框,但一旦退出调用的子例程就会再次打开;即它不必以编程方式重置。
  • 某些应用程序环境设置只会持续存在,直到另一个操作取消它们或以编程方式重置它们。这种类型的一个示例是 Application.CutCopyMode
  • 某些应用程序环境设置在应用程序实例的持续时间内持续存在。关闭 Excel 会破坏应用程序对象,重新启动 Excel 会实例化另一个应用程序对象。同样,在更改一个应用程序实例的设置后创建第二个应用程序实例也不会继承更改后的环境。例如 Application.EnableEventsApplication.ScreenUpdating。当不再需要时,通常会重置此类型;通常出现在子句的末尾。
  • 最后,某些应用程序设置会半永久地更改"file">“选项”中的选项。这些更改将被任何 future 的实例保留; Excel 是否关闭并重新启动,或者在单独的工作区中创建另一个应用程序实例。在对应用程序环境进行更改之前创建的第二个应用程序实例不受影响。出于所有意图和目的,您正在重写注册表中保留的 Excel 启动选项。示例为 Application.ReferenceStyleApplication.UseSystemSeparators

您的Application.CellDragAndDrop属于最后一类。它是一个 Excel 选项,保留在当前和所有 future 的应用程序实例中,直到通过 GUI 文件、选项或以编程方式手动重置。如果在另一台计算机上打开工作簿,它也有可能影响该计算机上的 Excel 环境。

没有任何设置可以更改网络计算机上的 Excel 环境,除非它们打开(并运行)带有宏的工作簿。为此,您需要一个事件目录网络组策略。

最后,我要添加一个警告。我并不经常被别人的工作簿改变我自己的环境所困扰,但我遇到的一个设置是Application.Calculation。打开别人的工作簿后,我发现我自己的Excel环境留在xlCalculationManual中,必须通过GUI或VBA的立即窗口将其更改为xlCalculationAutoMatic。虽然应用程序环境设置可能会导致很多问题,但我特别提到这一点是因为这是迄今为止我遇到的最常见的问题,而且通常是一个无害的错误;不是“黑帽”努力。如果打开别人的工作簿后您自己的公式没有重新计算,请先检查此处。

关于excel - excel-vba中应用程序对象属性和方法的范围是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42735743/

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