1

Я создал лист Excel с именованной таблицей. На левой границе первого ряда я добавил кнопку с надписью «+». Эта кнопка запускает макрос, который всегда добавляет новую последнюю строку внизу таблицы. Любая новая строка также содержит копию этой кнопки (хотя сама кнопка в столбце A не находится в области именованной таблицы). Во всяком случае, все эти общие кнопки делают то же самое.

Теперь я хочу добавить еще одну кнопку («-») таким же образом, но на этот раз я хочу удалить строку кнопки, которую я нажал. Чтобы сделать это, я должен определить точную кнопку, на которую нажали, и выяснить строку, в которой она находится.

Это выглядит так:

Это вообще возможно и как?

РЕДАКТИРОВАТЬ: Для устранения комментариев:

Код для добавления новой строки в конце:

ActiveSheet.ListObjects("TimeSheetTable").Resize Range("$B$" & HEADERROW & ":$H$" & iNewRow)

'Duplicate the previous row
Rows(iNewRow- 1).Select
Application.CutCopyMode = False
Selection.Copy
Rows(iNewRow).Select
ActiveSheet.Paste
Application.CutCopyMode = False

2 ответа2

2

Я хотел бы предложить вам использовать следующий код VBA. Вам нужно вызвать его с помощью командной кнопки, которую, как вы предполагаете, определили, щелкнули.

Sub WhichOneClicked()

  Dim b As Object, iBtnRow As Integer
  Set b = ActiveSheet.Buttons(Application.Caller)

  With b.TopLeftCell
    iBtnRow= .Row
  End With

 MsgBox "Row Number " & iBtnRow

End Sub

Надеюсь, это поможет вам.

0

У меня есть еще одно решение, которое намного проще и прямолинейнее идентифицирует нажатую кнопку. Он имеет ограниченную область применения, но прост и легок для понимания для ВСЕХ.

Private Sub CommandButton1_Click()

Dim ButtonName
ButtonName = "CommandButton1"
MsgBox "You have clicked the " & ButtonName & " just now button."

End Sub

NB. Наряду с этим кодом могут быть включены другие коды VBA или его можно вызывать из другого кода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .