Я создал макрос, который удаляет любые изображения в определенном диапазоне ячеек, если изображение присутствует Range("D199:U205"
, а затем копирует изображение с именем «JB Sig» в нижней части листа и вставляет его втеперь пустое место на листе.
При использовании макроса появляется сообщение «Ошибка времени выполнения 1004»: ошибка приложения или объекта ».Когда эта ошибка возникает, и я отлаживаюсь, строка, которая вызывает проблемы, If Not Intersect(Range("D199:U205"), Range(Pic.TopLeftCell, Pic.BottomRightCell)) Is Nothing Then Pic.Delete
Я переписал это многими способами, приведенными примерами онлайн, но ошибка все еще вызывает у меня проблемы. Странная вещь, иногда яполучить ошибку, в других случаях я не могу, и даже минимальное косметическое изменение в коде VBA может исправить это (временно).Так что на данный момент макрос отлично работает на моем компьютере.Однако мой коллега, который обращается к тому же файлу (в другом офисе), все еще получает ошибку времени выполнения.
Я очень неопытен с кодом, и любой VBA, который я пишу, обычно копируется и вставляется откуда-то,в отличие от меня, понимая, что я делаю.Поэтому, пожалуйста, будьте терпеливы с моей глупостью.Спасибо
Я попытался снять защиту с VBAProject, избавившись от пароля, который мне пришлось просмотреть.Это не сработало.Я пытался изменить код для удаления изображений для различных предложений в Интернете, но иногда я все еще сталкиваюсь с той же ошибкой.Кажется, существует много разных способов заставить код работать, но все они подвержены ошибкам во время выполнения.
Sub Approval_JB()
'
' Approval_JB Macro
'
'
Dim ws As Worksheet
Set ws = Sheets("Issue Letters")
ws.Unprotect Password:="john123"
Dim Pic As Object
For Each Pic In ws.Shapes
Dim R As Range
Debug.Print Pic.Name
Debug.Print Pic.TopLeftCell.Address
Debug.Print Pic.BottomRightCell.Address
Set R = Range(Pic.TopLeftCell, Pic.BottomRightCell)
If Not Intersect(Range("D199:U205"), R) Is Nothing Then Pic.Delete
Next Pic
Range("D199:U205").ClearContents
ws.Shapes.Range(Array("JB Sig")).Select
Selection.Copy
ws.Range("D201").Select
With ws.Range("D199")
.Value = "Yours Faithfully"
End With
With ws.Range("D204")
.Value = "Joe Bloggs"
End With
With ws.Range("D205")
.Value = "Engineer"
End With
Range("B192").Select
ws.Protect Password:="john123"
End Sub
Иногда это работает, как описано выше.Однако в других случаях при запуске макроса появляется эта ошибка.
Ошибка времени выполнения «1004»: ошибка приложения или объекта