【问题标题】:How do I programmatically double-click a cell in VBA/Excel?如何以编程方式双击 VBA/Excel 中的单元格?
【发布时间】:2016-03-23 06:29:58
【问题描述】:

我有一个 Excel 表格,其中包含一个公式,该公式仅在双击它所在的单元格时进行评估。我一直在尝试在打开的工作簿事件中编写一些代码,以触发双击或 VBA 等效的双击来强制评估此单元格的公式,但找不到任何有效的东西。 我试过了:

Application.Evaluate("I2")

^ 什么都不做

With Range("I2")
            .Value = .Value
End With

^也不做任何事情

Dim doubleClick As Variant
doubleClick = Application.WorksheetFunction.DfsCell("TimeSeries", 7.27, Chr(34) & "IRESS_UPDATE!$B$5:$B$36" & Chr(34), 2, , , , , , Chr(34) & "IRESS_UPDATE!$A$2" & Chr(34), Chr(34) & "IRESS_UPDATE!$B$2" & Chr(34), True, 0, False, True, "10:00:00", "16:00:00", 5, "0*5")

^给出运行时错误“438”:对象不支持此属性或方法

有人知道如何模拟双击单元格吗?

【问题讨论】:

  • 你试过 application.calculate 吗?
  • 使用Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, ByVal Cancel As Boolean) Cancel = True End Sub事件来确定工作表上的dblclick
  • DfsCell 是某种第三方 RTD 功能还是什么?需要更多信息。
  • 模拟鼠标事件使用Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)msdnPrivate Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long来获取/模拟鼠标坐标
  • excel默认内置双击动作是启动单元格编辑。双击单元格进行计算是没有意义的,因为您将处于单元格编辑模式。如果您安装了修改默认内置操作的第 3 方插件,您可以调用第 3 方 DoubleClick 程序吗?

标签: vba excel


【解决方案1】:

我找到了一个解决方案,以下代码强制评估第 3 方插件的功能,在本例中是澳大利亚金融市场软件 IRESS,但我看到了许多插件的示例:

Sub AutoUpdateIRESSData()
    Range("I2").Select
    Application.Run "'ddeiress.xla'!Execute"
End Sub

我在 Workbook_Open 事件中添加了对上述子例程的引用,它在打开工作簿时成功地重新评估了函数。

【讨论】:

    【解决方案2】:

    这是否可行,将工作表子更改为公共而不是私有?

    Option Explicit
    
    Sub test()
    
        Dim shToCall As Sheet1
    
        Set shToCall = Sheet1
    
        shToCall.Worksheet_BeforeDoubleClick Range("a1"), False
    
    End Sub
    

    【讨论】:

    • 感谢 Nathan 的输入,但我正在尝试向 Workbook_Open 事件添加代码,以便在打开工作簿时(而不是在运行双击事件之前)评估指定单元格中的公式。
    猜你喜欢
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多