【问题标题】:How to make Macro written on 32 bit Excel 2016 work on 64 bit Excel 2016如何使在 32 位 Excel 2016 上编写的宏在 64 位 Excel 2016 上工作
【发布时间】:2019-01-22 11:31:51
【问题描述】:

宏最初是在 64 位 excel 2016 版本(来自 Office 365)上创建的,但我一直在我的 32 位 2016 版本(来自 Office 365)中处理它。该宏在我的 32 位计算机上完美运行。但是,我正在为其工作的人正在使用 64 位版本的 Excel 2016,他们说它一直在为他们崩溃,但它是不一致的,一直在不同的地方崩溃,甚至偶尔会正常运行。该代码不包含任何声明语句或 long,因此我不确定为什么会发生这种情况或该怎么做。任何有关如何解决此问题或问题所在的帮助将不胜感激。谢谢你。下面是崩溃的代码副本。

Sub Formulas()

Dim rows As String

rows = CStr(Range("Sheet1!C31").Value)

Range("Sheet2!M2:M" & rows).Formula = "=((F2*1000)-(Sheet1!$C$13*(COS(2*PI()*(Sheet1!$C$15/360)))))*-1"
Range("Sheet2!N2:N" & rows).Formula = "=IF(G2<0,0,((G2+Sheet1!$C$19+Sheet1!$C$21)*Sheet1!$C$17))"
Range("Sheet2!O2:O" & rows).Formula = "=M2+N2"
Range("Sheet2!P2:P" & rows).Formula = "=O2/Sheet1!$C$23"
Range("Sheet2!Q2:Q" & rows).Formula = "=IF(OR(P2>(Sheet1!$C$25),P2<(Sheet1!$C$26)),1,0)"
Range("Sheet2!R2:R" & rows).Formula = "=IF(H2>0,1,0)"
Range("Sheet2!S2:S" & rows).Formula = "=IF(AND(Q2=1),(R2=1)*1,0)"
Range("Sheet2!B17").Formula = "=1-(SUM(S:S)/SUM(R:R))"
Range("Sheet1!C28") = Range("Sheet2!B17")

'Do While Not IsEmpty(ActiveCell.Value)
'     Range("Sheet2!M" & CStr(ActiveCell.Row)).EntireRow.Delete
'Loop


End Sub

我对 vba 和宏还很陌生,所以如果有人能指出代码的哪些方面在 64 位中不兼容,甚至建议如何修复它,我将非常感激。谢谢。

【问题讨论】:

  • “崩溃”是什么意思?任何错误消息或只是强制关闭 Excel?尝试在添加公式之前禁用计算Application.Calculation = xlCalculationManual,然后再启用它Application.Calculation = xlCalculationAutomatic。确保每个人都运行最新版本的 Excel(运行更新)。
  • "Regular" VBA 在 32 位和 64 位上运行相同:发布的代码中没有任何内容会在 64 位上导致问题
  • 该代码中没有任何内容会因 64 位而异。
  • 代码最终没问题。我们必须在此处的“注册表信息”部分下进行注册表破解:support.microsoft.com/en-us/help/3085435/…
  • 谢谢大家的帮助!

标签: vba excel 32bit-64bit excel-2016


【解决方案1】:

代码最终没问题。我们必须在此处的“注册表信息”部分下进行注册表破解:https://support.microsoft.com/en-us/help/3085435/august-8-2017-update-for-excel-2016-kb3085435

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 2019-03-16
    • 1970-01-01
    • 2017-02-10
    • 2018-11-04
    • 2020-09-11
    • 2019-06-27
    • 2014-07-28
    相关资源
    最近更新 更多