Я пишу код для кнопки в Excel с намерением взять номер строки нажатой кнопки, дублировать соответствующую строку с учетом номера строки, а затем вставить и сместить дублированную строку ниже исходной строки кнопки щелчка. Посмотрите, например, изображения: Нажмите здесь для просмотра изображения до нажатия кнопки. Нажмите здесь, чтобы просмотреть изображение после нажатия кнопки.
Я попробовал несколько версий кода, основанных на решениях аналогичных проблем, которые я нашел в Интернете, таких как здесь и здесь(среди прочего), но я не могу найти решение повторяющейся ошибки Невозможно получить свойство Buttons класса Worksheet. Из того, что я нашел в Интернете об этой ошибке, она часто возникает, когда какой-либо аргумент, передаваемый функции рабочего листа, имеет неправильный тип или просто не имеет смысла. Ниже я разместил две итерации своих кодов;
Private Sub CorrugatedR_Click()
Dim b As Object, RowNumber As Integer
ActiveSheet.Activate
Set b = ActiveSheet.Buttons("CorrugatedR")
With b.TopLeftCell
RowNumber = .Row
Rows(RowNumber + 1).Insert Shift:=xlDown
Rows(RowNumber).Copy Rows(RowNumber + 1)
End With
End Sub
Другая версия, которая должна делать то же самое (я много играл):
Private Sub CorrugatedR_Click()
Dim b As Object, RowNumber As Integer
ActiveSheet.Activate
ActiveSheet.Buttons("CorrugatedR").Select
ActiveSheet.Buttons("CorrugatedR").Copy
b.Paste
With b.TopLeftCell
RowNumber = .Row
End With
Rows(RowNumber + 1).Insert Shift:=xlDown
Rows(RowNumber).Copy Rows(RowNumber + 1)
End Sub
Быстрое важное замечание: изначально вместо того, чтобы вызывать имя самой кнопки: ActiveSheet.Buttons("CorrugatedR")
, вместо этого я реализовал ActiveSheet.Buttons(Application.Caller)
, потому что несколько человек сделали это предложение, но это дало мне другую ошибку Application.Caller = Error 2023. Проведя исследование, я думаю, что обе эти проблемы связаны с одной и той же повторяющейся проблемой, связанной с набором текста или с чем-то, о чем я не знаю; Я попытался внедрить и использовать информацию из решения той же ошибки, найденной здесь, и все равно не повезло. Моя интуиция подсказывает, что проблема может заключаться в коде, где я установил b
: Set b = ActiveSheet.Buttons("CorrugatedR")
Я все еще новичок в VBA и Excel, поэтому весь мой подход может быть ошибочным сам по себе, и я был бы очень признателен за любую помощь, я некоторое время застрял на этом.