Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在不编辑VBA代码的情况下解决了类型不匹配问题_Excel_Vba_Macos - Fatal编程技术网

Excel 在不编辑VBA代码的情况下解决了类型不匹配问题

Excel 在不编辑VBA代码的情况下解决了类型不匹配问题,excel,vba,macos,Excel,Vba,Macos,我有一个预算电子表格,里面有一堆宏,用来处理表格和数据。一切都很好。由于某种原因,保存新版本后,其中一个宏“添加折扣”出现类型不匹配错误。我分析了代码,没有发现问题,然后返回到以前的版本,它有完全相同的代码。奇怪的是,我发现有效的解决方案是剪切并重新粘贴模块中的代码(即,不修改代码,只需删除并重新粘贴) 我正在使用Mac,但我不知道这是否是一个因素。在过去的几个月里已经发生过两次了,我不知道为什么!有人知道是什么导致了这种情况,以及如何预防吗 我已经编辑了代码来去除那些超级的东西。在调试中引发类

我有一个预算电子表格,里面有一堆宏,用来处理表格和数据。一切都很好。由于某种原因,保存新版本后,其中一个宏“添加折扣”出现类型不匹配错误。我分析了代码,没有发现问题,然后返回到以前的版本,它有完全相同的代码。奇怪的是,我发现有效的解决方案是剪切并重新粘贴模块中的代码(即,不修改代码,只需删除并重新粘贴)

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

我已经测试了代码,它就像一个符咒。我脑海中闪现的唯一一件事(除了Mac问题)是,用户将焦点设置在另一个
工作簿上,这会产生错误(因为它找不到那些
工作表
ofc)

尝试指定
工作簿
名称,并查看是否得到任何结果:

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

希望这能有所帮助。

我已经测试了代码,它的效果非常好。我脑海中闪现的唯一一件事(除了Mac问题)是,用户将焦点设置在另一个
工作簿上,这会产生错误(因为它找不到那些
工作表
ofc)

尝试指定
工作簿
名称,并查看是否得到任何结果:

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

希望这有帮助。

您是否尝试过:
用于工作表(arrShts)中的每个sh。单元格
?我在Excel 2007上尝试了最小代码,但没有出现错误。但是,当数组的工作表名不存在时,我会在For Each语句中出现“下标超出范围”错误。@Teamothy感谢您的回复。我没有尝试过这种修改。你认为这会有助于解决随机的“类型不匹配”错误吗?正如我所说的,代码99%的时间都是有效的,但有时当我保存一个新版本时,它会停止工作,直到我重新粘贴相同的代码@谢谢你的努力。是的,正如我所说,代码在99%的时间内运行良好,这就是为什么我感到困惑的原因。此外,我也尝试了相同的文件,其中给出了错误的Excel for Windows,它是好的。只是Excel for Mac(当前版本为16.29)偶尔会出现错误。您是否尝试过:
用于工作表(arrShts)中的每个sh。Cells
?我在Excel 2007上尝试了最小代码,但没有出现错误。但是,当数组的工作表名不存在时,我会在For Each语句中出现“下标超出范围”错误。@Teamothy感谢您的回复。我没有尝试过这种修改。你认为这会有助于解决随机的“类型不匹配”错误吗?正如我所说的,代码99%的时间都是有效的,但有时当我保存一个新版本时,它会停止工作,直到我重新粘贴相同的代码@谢谢你的努力。是的,正如我所说,代码在99%的时间内运行良好,这就是为什么我感到困惑的原因。此外,我也尝试了相同的文件,其中给出了错误的Excel for Windows,它是好的。只是Excel for Mac(目前版本为16.29)偶尔会出现错误。谢谢Louis。同样,您认为这会有助于解决随机的“类型不匹配”错误吗?正如我所说,代码99%的时间都是有效的。我怀疑这是Mac电脑的问题。从我的经验来看,Excel for Mac有点问题,尤其是在运行更复杂的VBA等时。我想知道我的语法中是否有可以改进的地方或已知的导致问题的地方!不客气。唯一一次类似的事情发生在我身上,是因为用户在执行宏并指定名称的同时切换工作簿,帮助我解决了问题。当然,我不能保证它能在Mac上运行,但值得一试。:)谢谢你,路易斯。同样,您认为这会有助于解决随机的“类型不匹配”错误吗?正如我所说,代码99%的时间都是有效的。我怀疑这是Mac电脑的问题。从我的经验来看,Excel for Mac有点问题,尤其是在运行更复杂的VBA等时。我想知道我的语法中是否有可以改进的地方或已知的导致问题的地方!不客气。唯一一次类似的事情发生在我身上,是因为用户在执行宏并指定名称的同时切换工作簿,帮助我解决了问题。当然,我不能保证它能在Mac上运行,但值得一试。:)