#excel #vba
#excel #vba
Вопрос:
Цель моего макроса — сбросить мой лист.
Мой макрос сначала выполняет функцию clearcontents в нескольких разных диапазонах ячеек.
Затем я хочу заполнить некоторые из этих ячеек обратно 0
Я нашел одну рекомендацию, в которой я изменил их = «ВКЛ.» на = «0»
Пересечение (выделение, диапазон («D7:R23»)) = «0»
Я получаю следующее,
Ошибка времени выполнения ’91’
Объектная переменная или переменная блока не установлена
Есть идеи, что я делаю не так?
Код выглядит следующим образом:
Sub Clearcells()
Range("D2:Z2").ClearContents
Range("D3:AG3").ClearContents
Range("D4:AG4").ClearContents
Range("AE2:AG2").ClearContents
Range("C7:R23").ClearContents
Range("W7:Y23").ClearContents
Range("AC7:AF23").ClearContents
Range("B27:AG43").ClearContents
Intersect(Selection, Range("D7:R23")) = "0"
Intersect(Selection, Range("W7:Y23")) = "0"
Intersect(Selection, Range("AC7:AF23")) = "0"
End Sub
Комментарии:
1. Пожалуйста, предоставьте свой полный код, чтобы мы могли попытаться помочь вам устранить неполадки.
Ответ №1:
Эта ошибка означает, что ни одна из Select
отредактированных ячеек не попадает в диапазон D7:R23. Эти два диапазона полностью не пересекаются. Например:
В приведенном выше примере я Select
отредактировал блок A1: B5 перед запуском строки кода.
Комментарии:
1. Означает ли это, что я должен переходить строка за строкой?
2. @Miam НЕТ Это означает, что при выполнении этой строки кода
Select
отредактированные ячейки должны перекрывать блок ячеек D7: R273. Извините, я новичок в этом программном макросе. Итак, я должен выбрать ячейки перед запуском макроса?
4. @Miam В опубликованной вами единственной строке кода предполагается, что вы (или предыдущие строки кода) отредактировали
Select
некоторые или все ячейки в блоке.
Ответ №2:
Попробуйте это; Вы пытаетесь выполнить простую очистку, а затем запись в пустые ячейки; вам не нужно использовать Intersect, и вы можете объединить все диапазоны, чтобы сократить свой код.
Range("D2:Z2, D3:AG3, D4:AG4, AE2:AG2, C7:R23, W7:Y23, AC7:AF23, B27:AG43").ClearContents
Range("D7:R23, W7:Y23, AC7:AF23") = "0"
Ответ №3:
Я не мог понять, как очистить, а затем вставить, поэтому этот код просто заменяет все ячейки значением 0. В конечном итоге это то, что я хотел сделать.
Sub Clearcells()
Range("D2:Z2").ClearContents
Range("D3:AG3").ClearContents
Range("D4:AG4").ClearContents
Range("AE2:AG2").ClearContents
Range("B27:AG43").ClearContents
Range("C7:C23").ClearContents
Range("D7:R23") = "0"
Range("W7:Y23") = "0"
Range("AC7:AF23") = "0"
End Sub