Я понимаю, что уже есть ряд отличных ответов по борьбе с ошибками VBA TypeMismatch в Excel, но все они кажутся довольно зависящими от случая, и я, по общему признанию, слишком много сторонник VBA n00b, чтобы следовать им.
Итак, я подумал, сможете ли вы помочь мне в этом конкретном затруднительном положении: я составил книгу и я хочу, чтобы строки автоматически скрывались, если значение в столбце C меньше сегодняшней даты. * Я назначил следующий макрос для командной кнопки ActiveX: *
Sub Hide_PastOrders()
Dim MyRange As Range, C As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set MyRange = Range("d1:d1000")
MyRange.EntireRow.Hidden = False
For Each C In MyRange
If IsDate(C.Value) And C.Value < Date Then
C.EntireRow.Hidden = True
End If
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
До недавнего времени он работал нормально, но теперь иногда приводит к несоответствию типа, и я не уверен, почему. Это только кажется проблемой на нескольких рабочих листах, и всем им назначен один и тот же макрос.
Я также реализовал командную кнопку ActiveX, чтобы «Показать все строки»:
Sub ShowAll_Click()
ActiveSheet.Cells.EntireRow.Hidden = False
End Sub
Не было никаких проблем с этим.
Кроме того, я не уверен, что это актуально, но я создал ряд внутренних ссылок в моем документе. т.е. набрал "= A5" в B5, чтобы, если есть изменения в нашей аренде для нескольких единиц оборудования, мне нужно было бы ввести информацию только один раз. Это очень неприятно, потому что каждый раз, когда я сталкиваюсь с ошибкой «Несоответствие типов», некоторые ячейки меняются на «= REF».
Пожалуйста, дайте мне знать, если я использую неправильный подход или у вас есть предложения!
Спасибо, Александра.