首页 > 解决方案 > 无需编辑 VBA 代码即可解决类型不匹配

问题描述

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

我正在使用 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

标签: excelvbamacos

解决方案


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

尝试指定Workbook名称并查看是否得到任何结果:

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

希望这可以帮助。


推荐阅读