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)