【发布时间】: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)偶尔会出现错误。