ActiveX组合框值未设置为workbook_open

时间:2018-01-04 22:30:31

标签: vba excel-vba combobox excel

我们创建了一个工作簿,它使用ActiveX对象和宏来执行多个操作(计算,更改单元格中的值,在保存前强制执行字段,颜色更改,锁定和解锁等)。有3张:

列表 - 我们设置组合框的值,对单元格和组合框运行强制检查等等。这对用户来说是非常隐藏的

表单 - 这是用户输入数据的地方。它包含所有ActiveX对象

导入 - 这是一张格式化的工作表,我们可以将其导入数据库,并预期格式化值(即"英寸"而不是" in.H2O@60F& #34;,天数转换为小时)。这张表是非常隐藏的。

此工作簿可以从我们的网站下载并成功导入数据库。

我们想要做的是下载一个预先填充的版本,其中" Form"显示数据库中的数据。为此,我们使用值填充Import工作表(因为它们已经链接到我们需要填充的组合框)。即ComboA on" Form"链接到A4上的单元格"导入"。

当我们下载并打开预先填充的工作簿时,我们预计链接单元格的组合框会更新。当它没有我们尝试:

Sheets("Import").EnableCalculation = False
Sheets("Import").EnableCalculation = True
Application.Calculate

强制排到"重新计算"因此,当我们手动进入其中一个链接的单元格并按下Enter(或F9)更新相关的组合框时,触发链接的单元格工作。

这是部分成功的,因为大约1/3的组合框填充,但不是全部。似乎没有导致问题的订单或数据类型(一些Y / N更新,其他没有。组合框架A-D将更新,然后E-G不会,然后H将)。

我们尝试了Application.CalculateFull以及:

  • 将linkedcells设置为Dirty
  • 仅将.Calculate应用于工作表上的范围
  • 仅将.Calculate应用于工作表上的行(因为它全部在一行中)

我们可以手动强制每个组合框填充其链接的单元格但是考虑到组合框的数量,并且事实上会有更多像这样的工作簿来构建它不是一个理想的解决方案。

我们知道它正在点击workbook_Open()事件,因为我们放入了一些MsgBox项目和我们做的几个自定义种群(将degF转换为F然后推送到组合框)并且运行正常。

如果我们打开下载,保存它(在保存之前跳过必填字段),然后重新打开它正确填充/选择的一切(这更令人沮丧)。

对于为什么下载的版本没有按预期运行的任何想法将非常感激。

1 个答案:

答案 0 :(得分:0)

鉴于我所看到的其他帖子以及所要求的后续信息我虽然越多越好。那里有一个代码片段 - 我们找到了解决问题的方法。需要在上面提供的代码之前将Application.Calculation = xlCalculationAutomatic添加到open事件中。非常感谢