Как программно добавить кнопку в VBA рядом с некоторыми данными ячейки листа? - PullRequest
42 голосов
/ 30 декабря 2010

У меня есть функция, которая генерирует данные, скажем, для 100 ячеек строк (и 2 столбцов). Для каждой строки (в 3-м столбце) мне нужно добавить кнопку, при нажатии на которую открывается пользовательское модальное диалоговое окно, предоставляющее пользователю 4 варианта / кнопки на выбор.

Есть идеи, как это сделать?

/ Т

Ответы [ 2 ]

84 голосов
/ 30 декабря 2010

Я думаю, этого достаточно, чтобы вы встали на хороший путь:

Sub a()
  Dim btn As Button
  Application.ScreenUpdating = False
  ActiveSheet.Buttons.Delete
  Dim t As Range
  For i = 2 To 6 Step 2
    Set t = ActiveSheet.Range(Cells(i, 3), Cells(i, 3))
    Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height)
    With btn
      .OnAction = "btnS"
      .Caption = "Btn " & i
      .Name = "Btn" & i
    End With
  Next i
  Application.ScreenUpdating = True
End Sub

Sub btnS()
 MsgBox Application.Caller
End Sub

Создает кнопки и связывает их с butnS (). В подпункте btnS () вы должны показать свой диалог и т. Д.

Mathematica graphics

4 голосов
/ 30 декабря 2010

Предположим, ваша функция вводит данные в столбцы A и B, и вы хотите, чтобы пользовательская форма появлялась, если пользователь выбирает ячейку в столбце C. Один из способов сделать это - использовать событие SelectionChange:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim clickRng As Range
    Dim lastRow As Long

    lastRow = Range("A1").End(xlDown).Row
    Set clickRng = Range("C1:C" & lastRow) //Dynamically set cells that can be clicked based on data in column A

    If Not Intersect(Target, clickRng) Is Nothing Then
        MyUserForm.Show //Launch custom userform
    End If

End Sub

Обратите внимание, что пользовательская форма появится, когда пользователь выберет любую ячейку в столбце C, и вы можете захотеть заполнить каждую ячейку в столбце C чем-то вроде "выбрать ячейку для запуска формы", чтобы сделать ееОчевидно, что пользователю необходимо выполнить действие (наличие кнопки, естественно, означает, что на нее нужно нажать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...