Vba excel type mismatch
Автор Ёережка Жарков задал вопрос в разделе Другие языки и технологии
run-time error 13 type mismatch Excel и получил лучший ответ
Ответ от Алексей Матевосов (AlexM)[гуру]
Вы где ставите еочку перед Cells, а где нет. Без точки значения не определены. Ваш код с точками где надо
Sub Rrr()
With Sheets("Справ")
If .Cells(14, 7) = 14 Then
a = .Cells(12, 7): t = .Cells(3, 1)
.Cells(14, 7) = 13
For m = 8 To .Cells(8, 8)
.Cells(a - 14, m) = .Cells(a - 2, m)
.Cells(a, m) = IIf(Int(.Cells(t, m)) = 0, Empty, .Cells(t, m))
Next m
Range(Rows(a + 1), Rows(t - 3)).Delete
Range(.Cells(a - 13, 8), .Cells(a - 2, .Cells(8, 8)).ClearContents
.Cells(16, 7) = .Cells(28, 7)
.Cells(14, 7) = 1
End If
.Cells(14, 8) = .Cells(1, 1)
m = .Cells(12, 8)
If m <> "" Then Rows(m).Hidden = True
m = .Cells(13, 8)
If m <> "" Then Rows(m).Hidden = False
End With
End Sub
Без данных в таблице проверить код на 100% нет возможности
Ну и предыдущий совет о переменной m учтите.
У Вас очень опасно меняется m (какого типа? ) - она как описана вообще вне SubRrr? Подозреваю что по умолчанию => Variant
То Вы её как целое число используете, то как текст. задайте один тип и переменную для получения значений, другой, для цикла и т. д. а то запутаетесь и будут такие проблемы.
Подозреваю, что m у Вас стало либо числом, а Вы пытаетесь его сравнить со строкой, либо наоборот у Вас оно строка, а дальше в Rows вы пытаетесь получить от неё столбец.
Поставьте точку останова на if m и посмотрите чему равно m
Ну или Debug.Print m перед if m<>"" и смотрите в окно, где выводятся сообщения от Debug
Имелась такая проблема, получилось решить с помощью этого:
Решил с помощью WindowFix эту тему.