Necesito una macro con la instrucción Autofill

Hola que tal

Necesito ayuda con una macro que pueda realizar lo siguiente:

1.- Que pregunte al usuario la celda de inicio del que realizará la instrucción y que pregunte la columna final

Selection.AutoFill Destination:=Range(" : "), Type:=xlFillDefault

2.- La instrucción se debe ejecutar hasta la ultima celda con datos.

3.- Que repita el proceso de autofill hasta la columna indicada

Por ejemplo:

Que el usuario indique que empezará en la celda a4 y le indique que la columna final sea la columna z (tomando la posición z4 según especificó la fila en la celda inicial) ya que requiero rellenar con fórmulas, pero mis rangos siempre son variables

1 respuesta

Respuesta
1

La preparo y te la envío

Saludos. DAM

Sigue las Instrucciones para un botón y ejecutar la macro
1. Abre tu libro de Excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Ahora para crear un botón, puedes hacer lo siguiente:
6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona Asignar macro / Selecciona: pinta
9. Aceptar.
10. Para ejecutarla dale click a la imagen.

Sub rellenar()
'Por.DAM
On Error Resume Next
datos = InputBox("Favor de indicar, columna inicial, fila y columna final. " & _
    "Cada dato debe ir separado por comas, ejemplo: A,4,Z", "RELLENAR")
If datos = "" Then Exit Sub
ds = Split(datos, ",")
If IsNumeric(ds(0)) Then
    MsgBox "El primer parámetro debe tener letras", vbCritical, "RELLENAR"
    Exit Sub
End If
If Not IsNumeric(ds(1)) Then
    MsgBox "El segundo parámetro debe tener números", vbCritical, "RELLENAR"
    Exit Sub
End If
If IsNumeric(ds(2)) Then
    MsgBox "El tercer parámetro debe tener letras", vbCritical, "RELLENAR"
    Exit Sub
End If
Range(ds(0) & ds(1)).AutoFill Destination:=Range(ds(0) & ds(1) & ":" & ds(2) & ds(1)), _
        Type:=xlFillDefault
If Err.Number <> 13 Then
    MsgBox "Los parámetros capturados son incorrectos", vbCritical, "RELLENAR"
    Exit Sub
End If
End Sub

Saludos.DAM
Si es lo que necesitas.

Muchas gracias DAM, sólo que tengo un problemita, al probar para capturar los datos que pide ya sea con mayúsculas o minúsculas me ha generado el error "Los parámetros capturados son incorrectos".

Los datos los capturo como sugieres: c,2,f alguna sugerencia?

Te envío un archivo para que hagas la prueba con c, 2, f
Revisa la macro presionando ALT + F11 (al mismo tiempo), revisa que esta macro que te estoy enviando la hayas copiado exactamente igual en tu archivo.

https://www.dropbox.com/s/yf1jjngmkjs4kq0/rellenar%20fila.xlsm

Si sigues con problemas ocupa mi archivo y copia en este archivo tu información.

Hola DAM de nuevo muchas gracias, ya ubiqué porqué sale el error, en este caso es que el autofill corre de manera horizontal es decir:

A B C D

9 9 9 9

Lo que necesitaba era que lo hiciera hacia abajo y luego se cambiara de columna para repetir el proceso, ya que en cada columna tengo formulas diferentes, como son rangos variables, por eso necesitaba pedir al usuario que estableciera el inicio y el fin.

Perdón por no haber sido más clara desde el principio.

Prueba con esta macro

Sub rellenar()
'Por.DAM
On Error Resume Next
datos = InputBox("Favor de indicar, columna inicial, fila y columna final. " & _
    "Cada dato debe ir separado por comas, ejemplo: A,4,Z", "RELLENAR")
If datos = "" Then Exit Sub
ds = Split(datos, ",")
If IsNumeric(ds(0)) Then
    MsgBox "El primer parámetro debe tener letras", vbCritical, "RELLENAR"
    Exit Sub
Else
    ci = Columns(ds(0)).Column
End If
If Not IsNumeric(ds(1)) Then
    MsgBox "El segundo parámetro debe tener números", vbCritical, "RELLENAR"
    Exit Sub
End If
If IsNumeric(ds(2)) Then
    MsgBox "El tercer parámetro debe tener letras", vbCritical, "RELLENAR"
    Exit Sub
Else
    cf = Columns(ds(2)).Column
End If
    uf = ActiveCell.SpecialCells(xlLastCell).Row
    Range(Cells(ds(1), ci), Cells(ds(1), cf)). _
        AutoFill Destination:=Range(Cells(ds(1), ci), Cells(uf, cf)), _
        Type:=xlFillDefault
If Err.Number <> 13 Then
    MsgBox "Los parámetros capturados son incorrectos", vbCritical, "RELLENAR"
    Exit Sub
End If
End Sub

Saludos.DAM

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas