visual programación programacion para otra lenguaje hoja formularios comandos codigos boton aplicados excel vba

programacion - vba excel 2016 programación en excel macros y lenguaje vba pdf



¿Cómo agregar un botón programáticamente en VBA junto a algunos datos de celda de hoja? (2)

Tengo una función que genera datos para, por ejemplo, 100 filas de celdas (y 2 columnas). Para cada fila (en la tercera columna) necesito agregar un botón que, al hacer clic, abre un cuadro de diálogo modal personalizado que le da al usuario 4 opciones / botones para elegir.

¿Alguna idea de cómo hacer esto?

/ T


Creo que esto es suficiente para llevarte por un buen camino:

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

Crea los botones y los une a butnS (). En el sub btnS (), debe mostrar su diálogo, etc.


Supongamos que su función ingresa datos en las columnas A y B y desea que aparezca una forma de usuario personalizada si el usuario selecciona una celda en la columna C. Una forma de hacerlo es utilizar el evento 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

Tenga en cuenta que la forma de usuario aparecerá cuando un usuario seleccione cualquier celda en la Columna C y que desee rellenar cada celda en la Columna C con algo como "seleccionar celda para iniciar el formulario" para que sea obvio que el usuario necesita realizar una acción (teniendo un botón sugiere naturalmente que se debe hacer clic)