Другие языки программирования и технологии

run-time error 13 type mismatch Excel

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
Вы где ставите еочку перед 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 учтите.
НН
Неизвестно Неизвестно
27 337
Лучший ответ
У Вас очень опасно меняется m (какого типа? ) - она как описана вообще вне SubRrr? Подозреваю что по умолчанию => Variant

То Вы её как целое число используете, то как текст. задайте один тип и переменную для получения значений, другой, для цикла и т. д. а то запутаетесь и будут такие проблемы.

Подозреваю, что m у Вас стало либо числом, а Вы пытаетесь его сравнить со строкой, либо наоборот у Вас оно строка, а дальше в Rows вы пытаетесь получить от неё столбец.

Поставьте точку останова на if m и посмотрите чему равно m
Ну или Debug.Print m перед if m<>"" и смотрите в окно, где выводятся сообщения от Debug
Решил с помощью WindowFix эту тему.
Имелась такая проблема, получилось решить с помощью этого: