excel - 与笔记本电脑相比,在 Surface 平板电脑上运行时获得不同的结果
问题描述
我目前正在 Core i7 笔记本电脑上开发我的 Excel 工作簿。我已将我的 Excel 文件发送给 MS Surface 平板电脑上的同事。这些同事在 Surfaces 上得到了不同的行为。
步骤是:打开 Excel 文件,切换到选项卡并向我发送以%appdata%
.
有问题的选项卡具有以下代码:
Option Explicit
Private Sub Worksheet_Activate()
If p Is Nothing Then Set p = New Projects
p.validateSheet
End Sub
Private Sub Worksheet_Change(ByVal target As Excel.Range)
If p Is Nothing Then Set p = New Projects
p.updateSheet target
End Sub
本质上,从我的日志文件中,当笔记本电脑切换到它调用的选项卡时Worksheet_Activate
。但是,Surface 正在调用Worksheet_Change
工作表中的每一行和单元格。
我已经确认,Office 版本在这两种情况下都是相同的。
任何想法为什么会发生这种情况?
编辑#1
返回的部分日志。注意 updateSheet 的“开始”和“结束”,以及范围的变化。
2020-10-13 9:53:08 AM: Starting updateSheet.
2020-10-13 9:53:08 AM: Range: $D$2
2020-10-13 9:53:08 AM: 0001
2020-10-13 9:53:08 AM: Reset credentialWindowCancelled.
2020-10-13 9:53:08 AM: Ending updateSheet.
2020-10-13 9:53:08 AM: Starting updateSheet.
2020-10-13 9:53:08 AM: Range: $E$2
2020-10-13 9:53:08 AM: 0001
2020-10-13 9:53:08 AM: Reset credentialWindowCancelled.
2020-10-13 9:53:08 AM: Ending updateSheet.
2020-10-13 9:53:08 AM: Starting updateSheet.
2020-10-13 9:53:08 AM: Range: $F$2
2020-10-13 9:53:08 AM: 0001
2020-10-13 9:53:08 AM: Reset credentialWindowCancelled.
2020-10-13 9:53:08 AM: Ending updateSheet.
2020-10-13 9:53:08 AM: Starting updateSheet.
2020-10-13 9:53:08 AM: Range: $G$2
2020-10-13 9:53:08 AM: 0001
2020-10-13 9:53:08 AM: Reset credentialWindowCancelled.
2020-10-13 9:53:08 AM: Ending updateSheet.
2020-10-13 9:53:08 AM: Starting updateSheet.
2020-10-13 9:53:08 AM: Range: $H$2
2020-10-13 9:53:08 AM: 0001
2020-10-13 9:53:08 AM: Reset credentialWindowCancelled.
2020-10-13 9:53:08 AM: Ending updateSheet.
编辑#2
如何p
在ThisWorkbook
代码中初始化:
Private Sub Workbook_Open()
...
Set p = New Projects
...
End Sub
更新#1
以下代码在我同事的平板电脑上运行,一直显示 Worksheet_Activate...
Option Explicit
Private Sub Worksheet_Activate()
Debug.Print Now() & ": " & "Worksheet_Activate"
End Sub
Private Sub Worksheet_Change(ByVal target As Excel.Range)
Debug.Print Now() & ": " & "Worksheet_Change"
End Sub
我回到我的日志并发现了这个(截断以说明我的观点)
2020-10-13 12:51:06 PM: Starting validateSheet.
2020-10-13 12:51:06 PM: Starting FetchIdentification
2020-10-13 12:51:06 PM: Starting sendBitsRequest
...
2020-10-13 12:51:21 PM: Ending sendBitsRequest
2020-10-13 12:51:22 PM: Starting updateSheet.
...
2020-10-13 12:51:35 PM: Ending validateSheet.
注意"Starting validateSheet"调用 fromWorksheet_Activate
和"Starting updateSheet"调用 from Worksheet_Change
。附近也没有“结束验证表”。
似乎有一个从Worksheet_Activate
到Worksheet_Change
...的过渡
另请注意,只有我的机器似乎可以正确运行此代码。我能够在平板电脑和其他笔记本电脑上进行复制。所以,显然都在我身上。
p
正在位于 Modules 下的文件中进行初始化。但是,它没有在任何地方实例化:
Public p As New Projects
解决方案
在平板电脑上,我遇到on error goto
了错误。该错误与使用和实例化时实例化的不同浏览器有关HTMLDocument
。
我的机器:
compatMode: BackCompat
documentMode: 11
其他机器:
compatMode: BackCompat
documentMode: 5
我最终使用了一个InternetExplorer
对象而不是MSHTML
.
推荐阅读
- node.js - 尽管应用程序以 0 错误运行,但未使用 nodejs 通过 sendgrid 接收邮件
- javascript - Javascript 在哪里为函数调用的结果分配内存?堆栈还是堆?
- mongodb - 安装 MongoDB 时出现错误
- apache-kafka - 动态生成到新目的地,在 kstream 中读取它并在 Spring Cloud Stream Kafka 中删除目的地
- android - Flutter - 在构建 APK 上看不到通知图标
- javascript - 如何垂直为 Svg 路径设置动画?
- swift - Apple iMessage 扩展应用程序 - 你可以发出 http 请求吗?
- java - 在 JPA 中访问模型属性不起作用
- python - 使用 np.invert 反转布尔数组
- javascript - onClick 函数在渲染时被调用——我怎样才能阻止这种情况的发生?