



Al crear macros con VBA es normal tener que ir a la última celda con datos o primera celda vacía en Excel.
La propiedad Range.End y ActiveCell.End devuelve un objeto que representa la celda al final de la región que contiene el rango de origen.
- Range("A1").End(xlDown) ActiveCell.End(xlDown) - A ABAJO.
- Range("A1").End(xlToLeft) ActiveCell.End(xlToLeft) - A LA IZQUIERDA.
- Range("A1").End(xlToRight) ActiveCell.End(xlToRight) - A LA DERECHA.
- Range("A1").End(xlUp) ActiveCell.End(xlUp) - A ARRIBA.

En el rango A1:A6 de nuestra hoja Excel, disponemos de los siguientes datos (incluye celdas vacías):
A | B | C | D | E | |
---|---|---|---|---|---|
1 | Nombre | Fecha | Importe | Verificado | |
2 | Juan | 01/01/2016 | 25 | Ok | |
3 | Ana | 22 | Ok | ||
4 | Luis | 05/02/2016 | 22 | Ok | |
5 | Ok | ||||
6 | Rosa | 05/01/2016 | 222 | Ok |
Con Excel abierto.
Pulsar la tecla Alt y mantener pulsada
Pulsar la tecla F11. Mostrará el editor de Visual Basic.
Ir a: Barra de Menú
Insertar
Módulo. Mostrará la ventana del módulo donde escribimos la macro.
Escribir el código de la macro:
- ÚLTIMA CELDA CON DATOS EN UNA COLUMNA
Selecciona la última celda de una columna de datos en el rango de A1.
Sub UltimaCelda_Columna ()
Range("A1").End(xlDown).Select
End Sub
O también, ActiveSheet.Range("A1").End(xlDown).Select
O también, Range("A1").End(xlDown).Offset(0, 0).Select
Desde la celda activa A1 se desplaza a la celda A4 última con datos (A5 celda vacía).

- PRIMERA CELDA VACÍA EN COLUMNA
Selecciona la primera celda vacía de una columna de datos en el rango de A1.
Sub UltimaCelda_Columna ()
Range("A1").End(xlDown).Offset(1, 0).Select
End Sub
O también, ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select
Desde la celda activa A1 se desplaza a la celda A5 como primera vacía.

- ÚLTIMA CELDA DE UN RANGO
Selecciona la última celda del rango de la celda activa (considerando que estamos en A1).
Sub UltimaCelda_Columna ()
ActiveCell.End(xlDown).End(xlToRight).Select
End Sub
Desde la celda activa A1 se desplaza a la celda A4 y de allí a C4 como primera vacía.

- ÚLTIMA COLUMNA CON DATOS DE LA FILA
Selecciona la última columna de la fila activa (considerando que estamos en A1).
Sub UltimaCelda_Columna ()
Range("A1").End(xlToRight).Select
End Sub
Desde la celda activa A1 se desplaza a la celda C1 como última celda con datos (D1 celda vacía).

- PRIMERA CELDA VACÍA (COLUMNA) DE LA FILA
Selecciona la última columna de la fila activa (considerando que estamos en A1).
Sub UltimaCelda_Columna ()
Range("A1").End(xlToRight).Offset(0, 1).Select
End Sub
Desde la celda activa A1 se desplaza a la celda D1 como la primera celda vacía (a la derecha).

- ÚLTIMA CELDA CON DATOS DE LA HOJA
Selecciona la última celda con datos (considerando celdas vacías).
Sub UltimaCelda_Columna ()
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Offset(0, 0).Select
End Sub
Desde la celda activa A1 se desplaza a la celda E6 como última celda de la hoja.

- PRIMERA CELDA VACÍA (CON FILAS VACÍAS) DE LA HOJA
Las celdas vacías estén separadas una distancia constante (una de cada dos celdas de la columna está vacía).
Sub UltimaCelda_Columna ()
Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0))
ActiveCell.Offset(2, 0).Select
Loop
End Sub
- Configurar el bucle Do para que se detenga cuando se alcancen dos celdas
consecutivas vacías.
- Bajar 2 filas de la ubicación actual.
Desde la celda activa A1 se desplaza a la celda A7 como la primera celda vacía de la columna.

- Consultar:

mejor que bueno
Excelente explicación. Concreta y clara.
Tengo una duda:
Cómo hago para que ese código sea infinito?
Es decir, que llene siempre la última celda vacía de una fila y columna que aumente conforme se introducen datos.
Ejemplo:
Introduzco datos en la fila A1 hasta la A7, pero el siguiente dato debe ubicarse en la fila A8, pero el código esta hasta la A7 y así sucesivamente. Igual con las columnas.
Gracias
Hola Dennis,
Interpreto que lo que necesitas es situarte en la primera fila o columna vacía.
El código es el indicado en el post:
- Primera celda vacía (con filas vacías) de la hoja.
- Primera celda vacía (columna) de la fila.
Otra forma de incluirlo sera:
- PRIMERA FILA VACIA:
Dim ultimafila As Integer
ultimafila = Cells(Rows.Count, 1).End(xlUp).Row
Cells(ultimafila, 1).Offset(1, 0).Select
End Sub
- PRIMERA COLUMNA VACIA
Dim ultimacolumna As Integer
ultimacolumna = Cells(1, Columns.Count).End(xlToLeft).Column
Cells(2, ultimacolumna).Offset(-1, 1).Select
End Sub
Saludos,
Gracias. Pero el problema es que sólo se llega a la fila y columna definida, pero necesito ingresar datos de manera progresiva, es decir, cargar datos en K1,J2,I3,H4 y G5, pero el siguiente datos va en L1,K2,J3,I4,H5 y G6 y así sucesivamente.
Gracias de nuevo y felicitaciones por la forma de exponer las fórmulas.
Hola Dennis,
Puedes aplicar el desplazamiento desde la instrucción Offset(1,1).Select.
El número indica el desplazamiento de filas y de columnas.
Saludos.
Hola.
¿Si yo quisiera que fuese automático al pulsar enter?
En mi hoja excel tengo que poner varios datos por filas empezando en la B5, C5, D5, E5 pasando de aquí a la B6, C6, D6 y E6, ... el paso por filas lo haría con el cursor flecha a derecha, pero una vez llegado a E5 lo que haría es dar enter y querría que se posicionara en el B6 que sería la primera celda vacía de la columna B, y así indefinidamente con las siguientes filas según vaya rellenando datos, la fila 7, la 8, la 9 etc...
¿Es esto posible?
Muchas gracias.
Solución rápida, concisa y efectiva.La mejor de todas las que he encontrado
Hola Alberto,
Gracias por el comentario.
Saludos.
hola, necesito copiar datos de mi hoja 1 a la hoja 2, pero al pegar los datos en la hoja 2 necesito que se situe en la primera fila vacia. como lo puedo hacer?
saludos
Hola muchas gracias por estas macros, una de ellas me viene muy bien para empezar a rellenar la siguiente fila de una tabla.
Una consulta. Al ejecutar esta macro me interesaría que a su vez y en la misma celda que se marca al ejecutarla me escribiese el numero siguiente a la anterior celda, o sea, si la celda anterior con datos es la A20 y en ella está escrito en numero 25, al ejecutar la macro tendría que posicionarme en la celda numero A21 y escribir en ella el numero siguiente a la anterior, o sea, 26. ¿Como lo podría hacer?.
Saludos
Hola, he probado buscar la ultima celda vacía en la columna A con una tabla y con tabla no funciona, aunque las celdas de la tabla estén vacías, busca la primera celda vacía fuera de la tabla. Me podéis ayudar para que lo haga con tablas?. gracias, saludos
Hola Iliana,
En efecto, el post se refiere a celdas y rangos, para trabajar con tablas es necesario definir primero la tabla.
Existen diferentes formas de definirla, por ejemplo: ActiveSheet.ListObjects("Tabla_Clientes")
Saludos.
Ah, vale, gracias, saludos
Se me planteo la siguiente duda. Tengo que usar una formula para 1 millon de lineas. Si pongo la formula y arrastro me colapsa el archivo.
Lo que necesito es una macro que me copie la formula de la fila de arriba (Ej: B4). Me la pegue en B5 y pegue a valor la B4.
Asi sucesivamente para abajo hasta el ultimo dato que tengo en la columna A
Me podrian ayudar?
Desde ya muchas gracias!
Hola Guille, llegaste a solucionar tu duda?
Buenas noches
Desearia saber cual es la macro para insertar al final de una plantilla, una formula que sume toda la columna, desde la ultima fila, por ejemplo, desde la fila 100 hasta la fila 2 (El resultado tendría que estar en la fila 101)
Muchas gracias
Buenos días estimados!
1- Estoy necesitando seleccionar y copiar una columna entera, hasta la última celda con datos habiéndome situado en la celda de encabezado. Y necesito que incluya los espacios vacíos (celdas vacías). Es decir que seleccione y copie hasta que encuentre solo celdas vacías. Justamente para asegurarme que no quedan celdas con datos más abajo.
2- Por otra parte si pueden ayudarme tengo otra duda y es que necesito con un botón abrir un explorador de archivos, luego seleccionar el archivo, abrirlo y que luego comience a seleccionar y copiar columnas (el código del punto 1) desde ese archivo abierto a uno que abriría al principio (el que contiene los botones y el código VB).
Yo hice este código que pego debajo. El problema con el mismo es que:
A- el nombre del archivo desde donde selecciona y copia, es fijo. Si el nombre del archivo cambia el código no sirve. (Pregunta 2)
B- el rango de columnas seleccionadas para copiar es fijo. Si hay datos más allá de la fila 4170 no serán copiados. Por eso quiero cambiar el rango desde por ej: "A2:a la última celda con datos de la columna A" en vez de "A2:a4170". (Pregunta 1)
Mi código:
Sub IMPORT_RENEW()
'
' IMPORT RENEW Macro
'
Windows("Global Renewals Population 07-21-2017 updated.xlsx).Activate
Range(B2:B4170").Select
Selection.Copy
Windows("Template v3.xlsm").Activate
Range("B12").Select
ActiveSheet.Paste
Windows("Global Renewals Population 07-21-2017 updated.xlsx).Activate
Range(H2:H4170").Select
Selection.Copy
Windows("Template v3.xlsm").Activate
Range("C12").Select
ActiveSheet.Paste
Range.("B11").Select
End Sub
Hola Kike,
- Punto 1. Copiar columna.Como no especificas donde están las columnas, en misma hoja, mismo libro, libros diferentes, etc. El ejemplo muestra en diferentes hojas:
Worksheets("Hoja1").Range("A:A").Copy
Worksheets("Hoja2").Range("B:B").PasteSpecial xlPasteAll
Application.CutCopyMode = False
End Sub
- Punto 2.
Como el tema es más amplio en breve publicaremos un post con las posibilidades.
Saludos.
Gracias por tu respuesta. El problema de copia columnas enteras es que si luego yo deseo copiar en un rango más chico no me va a dejar. Por eso necesito que copie "desde" la celda que yo le diga (por ejemplo A2, "hasta" la última celda de esa columna (la última fila) donde encuentre datos.. No me sirve copiar la columna entera porque cuando quiera pegarlo en la celda A2 de destino encontrará espacio insuficiente porque copié una columna completa.
Googleando mucho encontré algunos códigos que "leen" la última celda de una columna y "suben" hasta la primer celda con datos (que sería la últma con datos de la columna, lo que yo busco). Pero no sé 2 cosas:
1- cómo guardar esa información en una variable y
2- cómo hacer referencia a esa variable dentro de un rango
La ídea sería esta (aunque este código no funcione justamente debido a mis 2 dudas):
dim ultima as integer
Windows("Origen.xlsx").Activate
Sheets("Datos").Select
ultima = cells(rows.count, 2).End(xlUp).Row
Range(cells(B2),cells("B" & ultima)).select
Selection.Copy
Windows("Template.xlsm").Activate
Sheets("Pegar_Aca").Select
Range("B2").Select
ActiveSheet.Paste
Si pudieras corregirme ese código me harías un gran favor. Como dije:
1- Cargar en una variable el dato de la última fila de la columna con datos
2- Hacer referencia a esa variable dentro de un rango para el número de fila del final de rango
Gracias!
Hola Kike,
Te remito por email macro con tus necesidades.
Saludos.
Gran clase.
Aprendí bastante. Gracias por estas lecciones.
buenas noches, quiero seleccionar un area de impresion
resultado de copiar 3 hojas y ordenarlas
necesito imprimir la linea de cuadricula pero sale muy delgada poco visible
se me ocurrio ponerle bordes
hice una macro pero no he podido ubicar la ultima fila y columna
a-j cuando la ultima columna no lleva siempre contenido
necesito seleccionar todo lo que voy a imprimir para aplicar los bordes
ejemplo hice una macro que copia unos datos a otro libro pero todo bien por ai, pero cuando la uso de nuevo me borra lo que puse anterior mente. si me pueden explicar como hago que la macro siempre se posicione en la celda de abajo pero que no sea creando una fila nuevo, solo que se posicione abajo
Hola Washington,
Posiblemente la macro incluye al inicio de la ejecución la eliminación del rango de datos y después aplicará lo deseado.
Revisa el código.
Saludos.
wow!! me encanta la manera en como lo explica y que aclare las dudas gracias por compartir tus conocimientos
Felicitaciones por los aportes.
¿Hay solución para la siguiente situación?
IR A LA ÚLTIMA CELDA EN UNA COLUMNA) QUE NO TENGA DATOS (VACIA) CUANDO HAY VARIAS CELDAS VACIAS ENTRE LOS DATOS.
NOTA: con una sola línea de comandos, es decir sin hacer un recorrido celda por celda.
Ejemplo:
A1= "Nombre"
A2= "Edgar"
A3= ""
A4= "Pepe"
A5= ""
A6= ""
A7= ""
A8= "Zulma"
El RESULTADO DEBE SER= 7
Gracias
Hola Hildebrando,
En VBA siempre hay que recorrer celda por celda para identificar el valor de la celda.
Saludos.
Excelentes las explicaciones, quisiera que me ayudaran como hago para copiar un rango de datos de una hoja a otra hoja pero que se pegue siempre en la primera fila vacia.
Gracias
Hola Juan,
Puedes escribir una macro como:
Sub Copia_Rango()
Sheets("Hoja1").Select
Range("B2:G13").Select
Selection.Copy
Sheets("Hoja2").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Donde de Hoja1 se copia el rango B2:G13 y se pega en Hoja2, celda B2.
Saludos.
Excelente explicacion
y funciona muyyy bien
gracias
quiero saber como obtener el ultimo valor de una columna
Hola Juan Daniel,
La expresión sería: Workbooks(strLibro) .Worksheets(strHoja) .Cells(lngFila, Workbooks(strLibro) .Worksheets(strHoja) .Columns.Count) .End(xlToLeft) .Column
Saludos.
Hola
Estoy necesitando copiar solo las filas que tengan datos en otra hoja de un archivo diferente en la en la ultima fila vacia, y a medida que se ejecute siga pegando en la siguiente fila vacia
UN APOYO ANDO REALIZANDO UNA DONDE LOS DATOS ME LOS ARROJA EN OTRA HOJA,
¿QUIERO SABER COMO HACERLE PARA QUE AL FINAL DE LOS DATOS QUE GENERO, SIGA CAPTURANDO A PARTIR DE LO ULTIMO REGISTRADO?
Hola Jonatan,
Deberás crear un contador para localizas la primera fila donde escribir los datos. En breve publicaremos un post al respecto.
Saludos.
como se llama la ultima celda de excel de la ultima fila y columna de excel
Hola Santiago,
No se a que te refieres con como se llama, la instrucción de código es la que se indica xlToRight y xlDown.
Saludos.
Puedes explicar más detalladamente ( todo el código necesario) por favor, en el caso de una Tabla.
Por ejemplo , cómo debo hacerlo para identificar la primera fila vacia en la columna A de la Tabla "Datos".
Muchas gracias
Hola Roberto,
Puedes aplicar algo así: Range("Tabla1").End(xlDown).Offset(1, 0).Select
Saludos.
Es la primera vez que ingreso a su página, y me ha parecido sencillo y completa a la vez, le dedican el tiempo a las personas que como yo nos gusta el excel y visual, Felicitaciones, Tengo preguntas para un formulario que quiero hacer como puedo realizarcelas.
Hola Javier,
Las consultas las puedes realizar en los comentarios de cada post.
Saludos y Bienvenido!!!
mil graciasescelentes ayudas
Una excelente redaccion didactica
Buen día,
me podrías ayudar con un código que al oprimir un botón me traiga el ultimo dato que contenga la fila 3 despues de la celda C3 hacia la derecha y me lo ponga en un label
Buenos días
Estoy elaborando una macro para introducir una serie de datos en varias hojas de calculo, pero no soy muy diestro en el tema de Visual Basic.
Mi pregunta es: Como puedo copiar los datos como valores?, en la siguiente formulación:
"Sheets ("Hoja1").Range("S6:S32").Copy Destination:=Sheets("Hoja2").Range("H5").End(xlRignt).Offset(0,1)"
Este procedimiento me cumple con lo que necesito pero me copia los datos como formula y yo necesito que sean valores.
Como la corrijo?
Gracias por su colaboración
Hola Carlos,
Por ejemplo: Pega en G5
Selection.Copy
Range("G55").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ActiveSheet.Paste
Application.CutCopyMode = False
Saludos
Hola buenas noches: una consulta, necesito si me podrian ayudar en lo siguiente:
Tengo una planilla de alumno donde las columnas Nota 1, 2 y 3 estan vacias para cargar las notas ejecuto un UserForm1 donde hay un Listbox que me carga los datos como DNI, Apellido y Nombre del alumno hasta aqui todo bien pero necesito que al seleccionar un alumno y precionar un boton llamado cargar se abra otro UserForm2 con los datos del alumno y en un textbox poner la nota y este se cargue en la columna de Nota 1 del alumno seleccionado, desde ya gracias
excelente! muchas gracias migo! justo lo que se necesitaba de manara clara y concisa.
Saludos!
Hola buen día,
Se que esta pregunta es mucho mas compleja y quizás no corresponda a este tema, pero es posible definir un rango de celdas teniendo en cuenta la primera y ultima celda de una tabla, independiente de su tamaño?, es para copiar la información que se genera a partir de una tabla dinámica como un rango a otra ubicacion.
Mil Gracias :).
Hola AndresGT,
Si lo que deseas es identificar la primera y la última celda la única opción es por macros.
Si deseas todo el rango desde la primera hasta la última fila puedes trabajar con el nombre de la tabla.
Saludos.
Buen día gente, buen año para todos.
Quiero copiar todo un rango de la última columna con datos hacia la derecha, y luego pegarlo en otro rango. Pero solo me copia la primer celda de esa última columna. Me podrían ayudar? por favor.
Sheets("Histórico Semanal").Select
Range("B2:B26").End(xlToRight).Select
Selection.Copy
Sheets("Planilla Stock").Select
Range("B2:B26").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Saludos, Franco
Hola Franco,
La instrucción End(xlToRight).Select se sitúa en la última celda de la columna, pero no selecciona el rango de la columna.
Saludos.
Hola, y gracias por este post, aquí he podido ver como encontrar la ultima celda sin datos de una fila, pero tengo un problema a la hora de recorre esa fila, tengo creado este codigo
ultimaCelda = Sheets("Hoja1").Range("E9").End(xlToRight).Column
For i = 9 To ultimaCelda
Range("E" & i) = Replace(Range("E" & i), "L", "P")
Next i
Esto lo que me hace es añadir una celda mas en la columna E, y lo que necesito es que en lugar de ir en vertical ese conteo que se mueva en horizontal, aumentado las columnas, para reemplazar el texto "L" que tiene la celda por un "P"
No se si se podra mostar esta imagen
[IMG]https://funkyimg.com/i/31Eqn.png[/IMG]
como puedo conseguir que avance en horizontal es conteo?
Gracias.
Hola Juan,
Cambia la variable i a columnas Range(i & 9).
Saludos.
Hola buenos días como están.
Por favor a ver si me pueden ayudar con código que no logro el resultado deseado.
Necesito copiar de A5 a K5 y pegarlo en la columa A de la primera fila vacía hacia abajo y luego que la copie borrar el contenido de A,B,C,D,E,F,G,H,J, las columnas I y K son formulas y deben mantenerse. La celda activa debe quedar en la columna A. Les envio el codigo. Lo que me falta es borrar el contenido:
Sub InsertarEquipo()
Application.ScreenUpdating = False
Range("A5:K5").Select
Selection.Copy
With ActiveSheet.Range("a" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
ActiveSheet.Range("a" & Rows.Count).End(xlUp).Select
End With
MsgBox "¡ Operación realizada satisfactoriamente !"
End Sub
Muchas Gracias!!
Hola Leo,
Inserta al final del código:
Range("A1:H6,J1:J6").Select
Range("J1").Activate
Selection.ClearContents
Range("A1").Select
Saludos.
Hola TC gracias por la pronta respuesta.
El código que me envías no funcionaría pues tiene rangos definidos. Te explico.
El rango A5:K5 va a ser siempre el rango base. A partir de la linea 6 necesito ir copiando esta linea según las necesidades del caso. Pudiera llegar en el tiempo a la fila 500. La idea es copiar a través de un botón este rango y solo dejarle las formulas para ingresar información en las celdas que se van a borrar. Por eso debe el código siempre copia en la primera fila vacía y el rango que se debe borrar es el de esa fila que se acaba de copiar y que se va a ir moviendo siempre hacia abajo.
Espero haberte aclarado mas la necesidad.
Agradecido de antemano, le saluda
Hola, excelente la explcacion. Pero se me genera un problema con la macro para la primer celda vacia de una columna. Yo no quiero que mi rango comience en A1, pero cuando cambio el rango por ejemplo de A1 a D5 no me lee la macro.
Espero me puedas ayudar.
Saludos
Hola Agustina,
Si cambias A1 por D5 funciona correctamente, otras cosa es que alguna celda que se muestra vacía tenga espacio en su interior.
Saludos.
Para ir a la primera de las ultimas celdas vacías de una columna con celdas intermedias vacías, hay un código que evita tener que recorrer toda la columna con una macro:
FilaVacia = Cells(65536, ColumnaEntrada).End(xlUp).Row
o similar usando offset ...
Saludos
BUENAS TARDES.
SUCEDE QUE COPIE LA SINTAXIS, PERO...
CUANDO INGRESO EN EL USERFORM UN "NUMERO" POR EJEMPLO DE 2 CIFRAS, ME SURGE UN INCONVENIENTE.
EL PRIMER NUMERO LO COLOCA EN LA CELDA VACIA, POR DEBAJO DE LA ULTIMA, PERO EL SIGUIENTE NUMERO TAMBIEN LO COLOCA POR DEBAJO Y ME LO FRACCIONA.
AL BORRANDO DE A UNO, ME SIGUE AGREGANDO CELDAS EN LA COLUMNA.
PUEDE ESTA MAL LA SINTAXIS UTILIZADA?
Private Sub TextBox13_Change()
Value = TextBox13
Worksheets("CARATULA2020").Range("D11") = Value
Worksheets("PERICIAS2020").Select
Range("D1").End(xlDown).Offset(0, 0).Value = TextBox1
Hola Walter,
Realmente no indicas que deseas realizar y falta código como para interpretarlo (D1 o TextBox1)...
Saludos.
Alguien que me pueda ayudar por favor.
Me gustaría aplicar bodes de forma automática en una hoja de reporte, que prácticamente sombree todo lo que tengo de datos y se apliquen los bordes.
quizás algunos de los ejemplos anteriores con algo complementado pueda realizar lo que me gustaría hacer,pero carezco de conocimiento para realizar una hazaña de estas.
Agradezco mucho la ayuda de todos.
Hola David,
Puedes insertar el código siguiente:
Sub formato_rango()
ActiveSheet.Range("A1", ActiveSheet.Range("d" & ActiveSheet.Rows.Count).End(xlUp)).Select
Selection.Borders.LineStyle = xlContinuous
Selection.Interior.Color = RGB(230, 230, 230)
End Sub
Aplica linea continua en las celdas y el color con el valor RGB deseado.
Saludos.
hola alguien me podría ayudar me dejaron diseñar un programa que tenga datos en la hoja 1 de Excel, tal vez unos 10 y a partir de ahí recorrer una fila de celdas a partir de A1 hasta encontrar una vacía y dejarla a esta como celda activa para que la entrada de datos comience a partir de ella una vez cerrado y vuelto a abrir el programa, realizar el anterior programa creando un autoejecutable que no muestre la página de Excel pero si guarde los datos, Solo se puede mostrar las ventanas de visual BASIC.
siento que es similar al que se esta explicando en esta pagina web
me podrias ayudar con algo estoy realizando una funcion para que una serie de datos se copien y se peguen en unas celdas en otra hoja de calculo, pero necesito hacer que dichos datos se peguen despues de cada celda escrita o sea abajo de cada vez que copie lo estoy haciendo atravez de macros pero no he podido dar con la funcion exacta me podrias ayudar estoy utilizando de esta manera
Sub GUARDAR()
If Range("E7").Value = Empty Or Range("E10").Value = Empty Or Range("E13").Value = Empty Then
MsgBox ("Datos Basios")
Exit Sub
End If
Sheets("PRODUCTO").Select
ultimafila = Cells(Rows.Count, 1).End(xlUp).Row
Cells(ultimafila, 1).Offset(1, 0).Select
Range("A7").EntireRow.Insert
Sheets("REGISTRO").Select
Range("E7").Copy
Sheets("PRODUCTO").Select
Range("B7").PasteSpecial xlPasteValues
Sheets("REGISTRO").Select
Range("E10").Copy
Sheets("PRODUCTO").Select
Range("C7").PasteSpecial xlPasteValues
Sheets("REGISTRO").Select
Range("E13").Copy
Sheets("PRODUCTO").Select
Range("D7").PasteSpecial xlPasteValues
Sheets("REGISTRO").Select
End Sub
pero me sigue pegando en la primera fila y no me sirve me puedas ayudar porfavor agradeceria cualquier consejo
Hola Luis,
Adapta el código:
Sub exporta()
Dim fila1 As Long
Dim fila2 As Long
Sheets("Hoja3").Activate
fila1 = Range("A" & Rows.Count).End(xlUp).Row
Range("A2:G" & fila1).Copy
Sheets("Hoja3").Activate
fila2 = Range("A" & Rows.Count).End(xlUp).Row
Range("A" & fila2 + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("A" & fila2).Select
End Sub
Saludos.
que genios, muy agradecido por la dedicación que le han dado a las explicaciones y pese que ya han pasado 4 años, sigue muy vigente.
amigos, tengo algunas dudas si me pueden ayudar, les estaré muy agradecido.
Tengo un libro "XX", donde tengo que copiar rangos de celdas, de acuerdo al encabezado de una celda y pegarlo en otra hoja pero del libro "YY" incrementalmente, por ejemplo:
"la Celda A1 dice: "Alumnos 1 Basico" y si dice "Alumnos 1 Basico", tengo que copiar inmediatamente las celdas desde A2 hasta la A7 en vertical y en la columna H2 hasta H7 en horizontal" el problema es que mes a mes tengo que hacer esto, pero no siempre llegan hasta la fila A7, a veces llegan hasta la A30, A15, A59, ...An°, así que ponerles rangos cerrados no me sirven. Pude hacer algo según lo que dice en sus primeros ejercicios "ActiveSheet.Range("A1").End(xlDown).Select" y luego hasta la columna final (H1:H7) "Range("A1").End(xlToRight).Select" y luego copiarlos con Selectio.Copy y pegarlo en la hoja, pero de manera rustica, ya que si los datos estan fuera de rango del libro "XX" no los copiará y otra complicación es que me sobrescribirá lo que pegue en el libro "YY", así que tengo que colocar una declaración de dos Sentencias ("Dim Leer_Fila_Vacía" y "Dim Pegar_contenido_nuevo) y un "Set" para determinar la "fila vacia" y pegar con in "With", sin sobreescribir lo que ya tengo en el libro "YY" desde el mes pasado, el contenido copiado desde el libro "XX".
A continuación, en el libro "XX" debe seguir leyendo y si encuentra la palabra "Profesores" debe copiar el contenido inmediatamente debajo de él y pegarlo en otra hoja del libro "YY", al igual que la explicación anterior.
y así con 4 sentencias más, es el mismo proceso.
tengo la idea en mi cabeza, con las sentencias IF THEN y ELSE.
pero de verdad me ha costado poder dar el tino con esta tarea.
porque la otra incomodidad es que donde se encuentran los títulos son celdas combinadas y ufff, un suplicio.
espero que puedan ayudarme.
gracias.
Hola Carlos,
En breve publicaremos un artículo al respecto.
Saludos.