Vraag Hoe voeg ik een knop programmatisch toe in VBA naast sommige bladcelgegevens?


Ik heb een functie die gegevens genereert voor bijvoorbeeld 100 celrijen (en 2 kolommen). Voor elke rij (in de 3e kolom) moet ik een knop toevoegen die, wanneer erop wordt geklikt, een aangepast modaal dialoogvenster opent dat de gebruiker 4 opties / knoppen geeft om uit te kiezen.

Enig idee hoe dit te doen?

/ T


39
2017-12-30 00:32


oorsprong


antwoorden:


Ik denk dat dit genoeg is om je op een mooi pad te krijgen:

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

Het maakt de knoppen en bindt ze aan butnS (). In de btnS () sub, zou u uw dialoog moeten tonen, enz.

Mathematica graphics


77
2017-12-30 02:55



Stel dat uw functie gegevens invoert in kolommen A en B en u een aangepast gebruikersformulier wilt laten verschijnen als de gebruiker een cel in kolom C selecteert. Een manier om dit te doen is door de SelectionChange evenement:

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

Merk op dat het gebruikersformulier zal verschijnen wanneer een gebruiker selecteert elke cel in kolom C en u wilt mogelijk elke cel in kolom C invullen met zoiets als "selecteer cel om formulier te starten" om duidelijk te maken dat de gebruiker een actie moet uitvoeren (met een knop suggereert dat er op moet worden geklikt)


4
2017-12-30 09:56