Добрый день Есть файл с макросами для удаленного снятия показаний с теплосчетчика. Поставлялся вместе с теплосчетчиком много лет назад. Авторов соответственно найти нереально. Сейчас вдруг начал барахлить и я не могу понять почему. Кода там довольно много, но вот выложу кусок в котором генерируется ошибка Type mismatch.
Код
' Процедуры ниже заполняют протокол данными со счётчика
'
Public Function ОбработатьЧасовой(Wrs As Excel.Worksheet, ByVal До As Date, ByVal Всего As Integer) As Integer
Dim i As Integer, j As Integer, k As Integer
Dim Регистр As Integer, iDay As Integer
Dim iStr As Integer, iPos As Integer
Dim День As Date
Dim a
With Wrs
If kTab = 0 Then Exit Function
День = До - Всего + 1
iDay = Sect(Sect_Tbl, 1) + TblBeg
For k = 1 To Всего
For i = 1 To kTab ' Цикл по регистрам
If ПрерватьЧтение Then
ОбработатьЧасовой = 1
Exit Function
End If
Регистр = sTab(2, i)
iPos = sTab(1, i)
iStr = iDay
' *************************************
a = MC601_СчитатьЧасовой(Регистр, День)
' *************************************
ИндикаторЕщё (1)
For j = 24 To 1 Step -1 ' Записываем в блок
.Cells(iStr, iPos) = a(j)
iStr = iStr + 1
Next j
Next i
iDay = iDay + TblLen
День = День + 1
Next k
End With
End Function
Конечно понимаю, что это очень неблагодарный труд, но может быть кто нибудь из уважаемых форумчан сразу увидит в чем дело. Ошибка на скрине ниже. Возникает сразу, при j=24. Переменную a объявлял и integer и Long, и скобочки ставил после a(). Не получается! Раньше работал, точно помню. Просто к этой процедуре нечасто обращаюсь, и не могу сказать что же поменялось. Вообще код так выглядит как будьто потерлось объявление переменной а. Незнаю...
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Собственно дело в этом. Есть как минимум два варианта, или сделать проверку If Not IsEmpty(), или разобраться почему MC601_СчитатьЧасовой вернул Empty.
john22255, может и не то, но заметил, что все переменные числовые объявлены как Integer. Не может возникнуть ситуации, когда какое-либо значение переменной превышает допустимое значение для типа Integer?