Я использую приведенный ниже код VBA, чтобы скопировать строку над кнопкой на листе и вставить эту копию, когда кнопка находится непосредственно над строкой. Его цель - вставить новую строку для пользователя, чтобы добавить информацию о шаге в документ управления проектом.
По какой-то причине, когда я добавляю информацию в одну из строк над этой скопированной строкой, я получаю сообщение об ошибке в указанной строке. Ошибка
ошибка времени выполнения '1004: метод вставки класса диапазона завершился неудачей.
Если я закончу и снова нажму кнопку, я получу
ошибка времени выполнения '1004': невозможно получить свойство TopLeftCell класса Button.
Если я выключу Excel и снова открою его, кнопка будет работать нормально. Я обычно добавляю все нужные мне строки, вводю данные, но когда я добавляю новую строку, эта серия ошибок снова появляется.
Есть ли причина для этого или есть лучшие практики кодов, которые помогут мне избежать этой проблемы?
Кроме того, я только что заметил, что, по-видимому, должен быть открыт другой рабочий лист, чтобы произошла ошибка.
Sub rowselect()
Dim b As Object, cs As Integer
Dim Row2 As Integer
Dim Row As Integer
Set b = ActiveSheet.Buttons(Application.Caller)
With b.TopLeftCell ' 2nd error when code attempted again. Excel must be shut down for code to run properly
Row = .Row - 1
Row2 = Cells(Row, "e")
End With
Rows(Row).Select
Selection.Copy
Selection.Insert shift:=xlDown 'First error thrown here
Cells(Row + 1, "e") = Row2 + 1
Selection.EntireRow.Hidden = False
End Sub