Ошибка выполнения 13 в цикле for i, которая использовалась для работы

Задний план:

Я хочу скрыть столбцы в листе, исходя из того, есть ли x в строке 7. x не вводится, а заполняется через формулу.

Я использовал следующий код в другом листе, если бы он работал. Единственное, что я изменил, это имя суб, рабочего листа и строки (7 вместо 5).

Однако всякий раз, когда я пытаюсь вручную запустить этот sub из редактора vba в качестве теста, он создает ошибку времени выполнения 13 (несоответствующий тип).

Sub hidCol2() Dim i As Long Application.ScreenUpdating = False Set ws = ThisWorkbook.Worksheets("Zeitplan") ws.Cells.EntireColumn.Hidden = False For i = Cells(7, Columns.Count).End(xlToLeft).Column To 1 Step -1 If Cells(7, i) = "x" Then Cells(7, i).EntireColumn.Hidden = True Next i Application.ScreenUpdating = True End Sub 

Мой вопрос:

Почему приведенный выше код создает ошибку времени выполнения 13, что мне нужно исправить?

Вот :

Обратите внимание, что это работает без Dim ws но я думаю, что это хорошая практика для измерения переменных перед использованием.

Если кто-нибудь может сообщить мне, почему Dim ws здесь не нужно, чтобы убрать некоторые сомнения в моей голове.

 Sub hidCol2() Dim i As Long Dim ws As Worksheet 'As Suggested by @eirikdaude but I don't know why it worked without it as well (Tested on a workbook with a single worksheet) Application.ScreenUpdating = False Set ws = ThisWorkbook.Worksheets("Zeitplan") ws.Activate ws.Cells.EntireColumn.Hidden = False For i = ws.Cells(7, Columns.Count).End(xlToLeft).Column To 1 Step -1 If Trim(ws.Cells(7, i).Text) = "x" Then ws.Cells(7, i).EntireColumn.Hidden = True Next i Application.ScreenUpdating = True End Sub 
  • ошибка времени выполнения 5 в VBA превосходит при работе с массивом
  • Ошибка ошибки VBA Excel Error-Time '53'
  • Ошибка выполнения в проекте VBA
  • Ошибка RunTime на макросе VBA
  • Ошибка -2147417848 (& H80010108): вызванный объект отключился от своих клиентов
  • Цикл VBA выходит из строя вокруг 88-й итерации
  • Логические операторы в Excel: если нет
  • Ошибка времени выполнения «13» «Несоответствие типа» в случае If Then Statement
  • Ошибка выполнения «9» Подзаголовок вне диапазона - Диапазоны копирования
  • Ошибка выполнения 9 в цикле
  • Сортировка нескольких ключей в VBA; Ошибка выполнения 450: неправильное количество аргументов или недопустимое присвоение свойств
  • Давайте будем гением компьютера.