【问题标题】:Type mismatch solved without editing VBA code无需编辑 VBA 代码即可解决类型不匹配
【发布时间】:2019-10-07 09:24:30
【问题描述】:

我有一个预算电子表格,其中包含一组用于操作工作表和数据的宏。一切正常。出于某种原因,保存新版本后,“添加折扣”宏之一出现类型不匹配错误。我分析了代码,找不到问题,然后返回到以前的构建,它正在工作,它具有完全相同的代码。奇怪的是,我发现可行的解决方案是剪切并重新粘贴模块中的代码(即不修改代码,只需删除并重新粘贴)。

我使用的是 Mac,但我不知道这是否是一个因素。在过去的几个月里已经发生了两次,我不知道为什么!有谁知道什么会导致这种情况以及如何预防?

我已经编辑了代码以去掉多余的东西。在调试中引发类型不匹配的行是

For Each sh In Worksheets(arrShts)

非常感谢

Sub AddDiscount()

Dim lineCode As String
Dim arrShts As Variant
Dim row As Integer
Dim sh As Worksheet
Dim rngS As Range, rngD As Range, totalCell As Range, totalSection As Range, discountSection As Range
Dim cell As Range, formla As Range

lineCode = Selection.EntireRow.Cells(, 1).Value
row = Selection.row
arrShts = Array("Control", "Budget", "OT", "WD", "CdA")

'Proceed with line item discount...
If lineCode = "L" Then
    For Each sh In Worksheets(arrShts)
        sh.Rows(row + 1).EntireRow.Insert Shift:=xlShiftDown, _
                                CopyOrigin:=xlFormatFromLeftOrAbove
        sh.Rows(row + 1).ClearComments
        sh.Rows(row + 1).FormatConditions.Delete
        sh.Rows(row).EntireRow.Copy sh.Rows(row + 1).EntireRow
    Next sh

End If

End Sub

【问题讨论】:

  • 你试过了吗:For Each sh In Worksheets(arrShts).Cells
  • 我在 Excel 2007 上尝试了最少的代码,没有出现错误。但是,当数组的工作表名称不存在时,我会在 For Each 语句中收到“下标超出范围”错误。
  • @Teamothy 感谢您的回复。我没有尝试过这种修改。你认为它会帮助解决随机的“类型不匹配”错误吗?正如我所说,代码 99% 的时间都可以正常工作,但有时当我保存新版本时,它会停止工作,直到我重新粘贴相同的代码!
  • @PaulOgilvie 感谢您的尝试。是的,正如我所说,代码在 99% 的情况下都能正常工作,这就是我感到困惑的原因。我也尝试过相同的文件,它在 Excel for Windows 上出现错误,这很好。只是 Excel for Mac(当前版本 16.29)偶尔会出现错误。

标签: excel vba macos


【解决方案1】:

我已经测试了代码,它就像一个魅力。我想到的唯一一件事(除了 Mac 问题)是用户将焦点设置在另一个 Workbook 上并产生错误(因为它找不到那些 Sheets ofc)。

尝试指定Workbook 名称,看看是否有任何结果:

For Each sh In Workbooks("My workbook.xlsm").Worksheets(arrShts)

希望这会有所帮助。

【讨论】:

  • 谢谢路易斯。您再次认为它会帮助解决随机的“类型不匹配”错误吗?正如我所说,代码在 99% 的时间内都能正常工作。我怀疑这是Mac的事情。从我的经验来看,Excel for Mac 有点问题,尤其是在运行更复杂的 VBA 等时会出现问题。我想知道我的语法中是否有可以改进或已知会导致问题的东西!
  • 不客气。唯一一次发生在我身上的类似事情是因为用户在执行宏时切换工作簿并指定名称帮助我解决了问题。当然,我不能保证它可以在 Mac 上运行,但值得一试。 :)
猜你喜欢
  • 1970-01-01
  • 2018-12-13
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
相关资源
最近更新 更多