excel - 无需编辑 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
解决方案
我已经测试了代码,它就像一个魅力。我想到的唯一一件事(除了 Mac 问题)是用户已将焦点设置在另一个上Workbook
并产生错误(因为它找不到那些Sheets
ofc)。
尝试指定Workbook
名称并查看是否得到任何结果:
For Each sh In Workbooks("My workbook.xlsm").Worksheets(arrShts)
希望这可以帮助。
推荐阅读
- curl - Meilisearch 无效的 JSON:第 1 行第 1 列的预期值
- typescript - 柏树和打字稿。获取标题最高的元素
- javascript - 工厂模式和条件类的区别?
- sql-loader - Oracle 外部表替换功能
- excel - 我想要一个将特定区域保存为 PDF 并且仅在填写完所有信息后出现的按钮
- java - 如何使用 Spring Boot 和 Jackson 序列化 Instant 而无需纳秒?
- sql - 如何在PL/SQL的过程中声明变量
- vue.js - 在 VueJs 中基于路由预加载 webchunk
- c# - 如何使用 LINQ 从多个列表中找到 Distinc?
- python - 如何在 Python 中重写 DataFrame 中列的字段?