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

excel vba中应用程序对象属性和方法的范围是什么,excel,vba,Excel,Vba,有人能给我一个在Excel vba中应用方法的范围的快速想法吗 我正在尝试关闭Excel vba中的“拖放”操作,以避免在筛选出的单元格中或在组中折叠的单元格中丢失数据。我知道实现这一目标的唯一方法就是这样 Private Sub Worksheet_Activate() Application.CellDragAndDrop = False End Sub 我的经验是,应用程序方法影响Excel中的所有内容。因此,当我的工作表\u Activate-event启动时,拖放不仅会在整

有人能给我一个在Excel vba中应用方法的范围的快速想法吗

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

Private Sub Worksheet_Activate() 
    Application.CellDragAndDrop = False
End Sub
我的经验是,应用程序方法影响Excel中的所有内容。因此,当我的工作表\u Activate-event启动时,拖放不仅会在整个活动工作簿中停用,而且会在当时我的计算机上运行的每个工作簿中停用

我进一步假设,即使在我的机器上关闭重新启动的Excel之后,关闭“拖放”功能仍将持续,对吗?那会储存在哪里


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

该设置是持久的。此外,如果您将其添加到工作表事件中,那么如果其他人打开您的书并运行宏,他们也会“捕获”它

通过在工作簿\u打开事件中将其设置为False,然后在工作簿\u关闭前再次将其设置为True,可以最小化范围。因此,它只会影响您想要的工作簿,并且不太可能弄乱其他人的Excel应用程序

Private Sub workbook_BeforeClose(Cancel As Boolean)
    Application.CellDragAndDrop = True
End Sub
有人要求举行公开活动。给你

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

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

  • 某些应用程序环境属性是只读的,无法通过编程进行更改。这种类型的示例有
    Application.ActiveCell
    Application.ActiveWindow
  • 有些应用程序成员根本不是属性,而是命令<代码>应用程序。计算强制计算循环;它不接受值
  • 某些应用程序环境设置仅在子系统的持续时间内保持,并在子系统完成后恢复。这种类型的一个例子是
    应用程序。DisplayAlerts
    ,它可以暂时关闭恼人的确认消息框,但一旦在退出时调用它的子程序,它就会再次打开;i、 e.不必通过编程重置
  • 某些应用程序环境设置仅在另一个操作取消或以编程方式重置之前保持不变。这种类型的示例是
    Application.CutCopyMode
  • 某些应用程序环境设置在应用程序实例的持续时间内保持不变。关闭Excel会破坏应用程序对象,重新启动Excel会实例化另一个应用程序对象。类似地,在一个应用程序实例中更改设置后创建第二个应用程序实例不会继承更改的环境。例如
    应用程序.EnableEvents
    应用程序.ScreenUpdate
    。这种类型通常在不再需要时重置;通常在潜艇的末端
  • 最后,一些应用程序设置会半永久地更改文件>选项中的选项。这些变更由任何未来实例保留;是关闭并重新启动Excel,还是在单独的工作区中创建另一个应用程序实例。在对应用程序环境进行更改之前创建的第二个应用程序实例不受影响。出于所有目的,您正在重写保留在注册表中的Excel启动选项。例如
    Application.ReferenceStyle
    Application.UseSystemSeparators
您的
应用程序.celldragandrop
属于最后一类。它是一个Excel选项,保留在当前和所有未来的应用程序实例中,直到通过GUI文件、选项或编程手动重置为止。如果工作簿是在另一台计算机上打开的,它也可能会影响该计算机上的Excel环境

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


最后,我会补充一项警告。我不经常被别人的工作簿改变我自己的环境抓到,但我被抓到的一个设置是
Application.Calculation
。打开其他人的工作簿后,我在
xlCalculationManual
中找到了自己的Excel环境,必须通过GUI或VBA的即时窗口将其更改为
xlCalculationAutoMatic
。虽然应用程序环境设置可能会导致很多问题,但我之所以特别提到这一点,是因为它是我遇到的最常见的错误,通常是一个无辜的错误;不是“黑帽子”的努力。如果您自己的公式在打开其他人的工作簿后没有重新计算,请先检查此处。

如果您包含工作簿的一个片段\u Open事件将属性设置为False,您的答案会更好。Lol,我关心的是限制范围,因为OP已经知道如何禁用它,但是。。。完成。当然,但当有人在6个月后出现并阅读您的答案时,对他们来说会更好:)FWIW,在同一工作表代码表的
工作表中使用
Application.celldragandrop=True
关闭工作簿时不会重置此应用程序环境属性<代码>工作表\u停用
仅通过更改
ActiveSheet
属性(即选择另一个工作表)而不是关闭工作簿触发。不确定这有多困难,但您可能希望尝试使用API函数。这可能有点过分了。回答得很好,尤其是结尾的警告。我通常认为这是个错误。