Inserción de filas en Excel mediante VBA

Resulta que necesito saber como puedo crear en prima instancia una fila cuando un usuario de clic sobre los números que estén en la parte superior izquierda de la hoja de calculo... Con la grabadora de Macroshago el proceso y me genera el siguiente código:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub 
Pero al insertarlo a la hoja o al evento de darle clic izquierdo en algunas ocasiones me inserta la fila y en otras no,,, no se por que hace eso siendo que un código en Visual Basic debe de funcionar siempre, y ademas coo hago para insertar registros que están en una UserForm a dicha celda nueva que se cree al dar clic
Muchas Gracias!, que pena contigo pero esd urgente mi jefa acosa más que una novia embarazada :)
Att. Hernán Camilo
[email protected]
Si desea le envío el archivo .

2 Respuestas

Respuesta
2
Puedes probar algo como esto:
1. En el userform, crea un textbox y un button (commandbutton1)
2. Asocia este código al button:
Private Sub CommandButton1_Click()
 Rows("13:13").Select
 Selection.Insert Shift:=xlDown
 Cells(13, 1).Value = TextBox1.Value
End Sub
3. Esto crea una fila a la altura de la nº 13 e ingresa el valor del textbox en la columna 1 de la nueva fila.
Puedes modificar el código para adaptarlo aotras fuentes de datos.
Antes que todo quiero agradecerle infinitamente por su ayuda sinceramente me sirvió mucho el código que me has enviado...
Pero tengo una pregunta, resulta que al probar con:
Selection.Insert Shift:=xlDown ó con Selection.Insert Shift:=xlTop ó con  Selection.Insert Shift:=xlUp lo que hace es insertarme filas en la parte superior de una fila seleccionada, lo que necesito es que me permita insertar una fila en la parte inferior de una fila seleccionada...
Muchas gracias de nuevo, de verdad usted me ha salvado de que el jefe me hubiera colgado en la pared :)
Felicidades!
Esto lo hace Excel por defecto. Una solución fácil que se me ocurre es modificar la línea
Rows("13:13").Select
Por un valor superior, es decir, Rows("14:14"). Select.
Así, se insertará donde tú quieres.
Respuesta

Sub InsertarFila()
Rango = ActiveCell.Address
ActiveCell.Offset(1, 0).Select
Selection.EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range(Rango).Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas