У меня есть бюджетная электронная таблица с кучей макросов, которые используются для управления листами и данными. Все отлично работает. По какой-то причине после сохранения новой версии в одном из макросов «Добавить скидку» возникает ошибка несоответствия типов. Я проанализировал код, не смог найти проблему, затем вернулся к предыдущей работающей сборке, в которой был точно такой же код. Странная вещь заключается в том, что решение, которое я нашел для работы, состоит в том, чтобы вырезать и перекомпилировать код в модуле (т.е. без изменений в коде, просто удалить и перекомпилировать).
Я использую 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