Ошибка 1004 относится к операциям Excel и может возникать по разным причинам: неверный диапазон, ограничения листа или неподходящее состояние объекта. Одного номера недостаточно для готового исправления.

Начните с точной строки и минимального воспроизводимого примера.

Что подготовить

Создайте «Проверка». В учебном варианте нужно записать 450 в B2. Адреса A0 и строки за пределом листа недопустимы.

До запуска получите имя книги, листа и диапазона, использованные в упавшей команде. Не заменяйте их на ActiveSheet только для того, чтобы скрыть проблему контекста.

Код и порядок выполнения

Option Explicit
Sub WriteValidCell()
    Dim ws As Worksheet
    Dim rowNum As Long, colNum As Long
    Set ws = ThisWorkbook.Worksheets("Проверка")
    rowNum = 2: colNum = 2
    If rowNum < 1 Or rowNum > ws.Rows.Count Then Exit Sub
    If colNum < 1 Or colNum > ws.Columns.Count Then Exit Sub
    ws.Cells(rowNum, colNum).Value = 450
End Sub

Проверки ограничивают номера разрешёнными границами листа. Для rowNum = 2 и colNum = 2 назначение — B2. Код не использует недопустимый адрес A0.

Это исправление только класса ошибок адресации. Оно не отменяет защиту листа, объединение ячеек, занятость файла или иные причины 1004 в другой команде.

Учебный код: Ошибка 1004 в Excel VBA: как найти причину.
Учебный код: Ошибка 1004 в Excel VBA: как найти причину.

Как проверить результат

На обычном доступном листе B2 получает 450. Номер строки 0 отклоняется до обращения к Cells.
На обычном доступном листе B2 получает 450. Номер строки 0 отклоняется до обращения к Cells.

На обычном доступном листе B2 получает 450. Номер строки 0 отклоняется до обращения к Cells.

Ограничения и частые ошибки

Если сбой на записи, проверьте защиту и объединённые области. Если на Copy/PasteSpecial — источник, буфер и размеры назначения. Если на сохранении — путь, формат, доступ и существующий файл.

Уберите Select и Activate там, где они не являются целью команды. Явное ws.Range помогает увидеть контекст, но не исправляет любую ошибку автоматически.

Сохраните Err.Description и фактические аргументы операции. Отключение предупреждений, всей защиты или включение всех макросов не является общим лечением 1004. После исправления проверьте нормальный и граничный случай.

Проверка перед рабочим запуском

  • Найдена точная упавшая команда.
  • Проверены книга и лист.
  • Границы адреса допустимы.
  • Исправление связано с причиной, а не только номером.

Сначала выполните пример на учебной копии с указанными именами листов и диапазонами. Сравните исходные данные и результат, затем сохраните проверенный вариант процедуры.

Продолжить изучение: Range, Cells и ActiveCell в Excel VBA, Защита листа и скрытие формул через VBA, On Error в VBA: обработчик ошибок и Resume Next.

Разберитесь с макросами вместе с преподавателем

На занятии вы записываете действия, читаете код и проверяете результат на небольшом примере. Преподаватель подберёт задания под ваш уровень и поможет понять связь между командами VBA и изменениями в книге.

Начните с бесплатного вводного урока: 45 минут, один на один, без обязательств. Обсудите цель и попробуйте формат. Решение о продолжении — после занятия.

Записаться на бесплатный урок