Macro de variables de filas de excel

Sub Macro7()

Sheets("Fecha de Acta").Select

Range("$B$5").Select

Dim i As Integer

a = 5

i = 5

Do Whilei < 6

Range("B" & a).FormulaR1C1 = Date

lastrow = Cells(Rows.Count, 2).End(xlUp).Row

Cells(lastrow, 2).Offset(1, 0).Select

i = i + 1

Loop

a = a + 1

End Sub

Tengo este código, quiero que al ir ejecutando la macro la variable "a" valla aumentando de uno en uno para que pueda mantenerse en una columna todos los datos. Por ejemplo, "a" inicializa en 5, osea que es la celda "B5" y quiero que al ejecutar la macro valla aumentando el "a", B6, B7, B8... Y así sucesivamente

¿Qué esta mal en mi código?

2 Respuestas

Respuesta
1

La macro presenta varias fallas, mejor explícame qué quieres hacer.

¿Quieres poner la fecha desde B5 hasta Bn?

Pero n, según entiendo, es la última fila con datos, pero si en la columna B no hay datos, entonces n sería 1 ó 5, no lo sé.

Para calcular la última fila con datos, debes apoyarte de una columna que tenga datos.

Por ejemplo, si quieres poner la fecha en la columna B, desde B5 hasta la última celda con datos de la columna A, el código quedaría así:

Opción 1:

Sub Macro1()
    'última celda con datos de la columna A
    u = Range("A" & Rows.Count).End(xlUp).Row
    'el contador va desde 5 hasta u
    For i = 5 To u
        Range("B" & i) = Date
    Next
End Sub


Opción 2:

Sub Macro2()
    'última celda con datos de la columna A
    u = Range("A" & Rows.Count).End(xlUp).Row
    i = 5
    Do While i <= u
        Range("B" & i) = Date
        i = i + 1
    Loop
End Sub

Opción 3

Sub Macro3()
    'última celda con datos de la columna A
    u = Range("A" & Rows.Count).End(xlUp).Row
    i = 5
    Do
        Range("B" & i) = Date
        i = i + 1
    Loop While i <= u
End Sub

Opción 4

Sub Macro4()
    'última celda con datos de la columna A
    u = Range("A" & Rows.Count).End(xlUp).Row
    Range("B5:B" & u).Value = Date
End Sub

Si te das cuenta, en todas las opciones, estoy utilizando la columna A, como apoyo para obtener la última celda con datos. Si utilizas la columna B, no te va a funciona, porque la columna B no tiene datos, porque supongo que la columna B está vacía y la vas a llenar con una fecha.


Avísame si tienes dudas y mejor me explicas con ejemplos qué necesitas hacer.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Ok, Lo voy a explicar un poco mas detallado:

Lo que pasa es que en una hoja del excel tengo un boton que llama a una macros. Y esta macros es para que, cada vez que precione ese boton, en otra hoja me genere la fecha en una celda determinada. Y cada vez que aprete ese boton se vallan generando las fechas una debajo de la otra es por eso que queria poner la fila como variable. Como podria hacer el codigo ? 

Esa es la hoja en la que quiero que se llenen las fechas, solo en la columna que dice "Fecha Kick Off"

H  o la:

Te anexo la macro para poner la fecha una debajo de la otra, en la columna B de la hoja "Fecha de Acta", cada vez que presiones el botón.

Sub PonerFeha()
'Por.Dante Amor
    Set h1 = Sheets("Fecha de Acta")
    u = h1.Range("B" & Rows.Count).End(xlUp).Row + 1
    If u < 5 Then u = 5
    h1.Cells(u, "B") = Date
End Sub

Al final de mi respuesta tienes 2 opciones para valorar la respuesta: "Votar" y "Excelente", si pusiste votar significa que tienes alguna duda, si no es así, apreciaría que cambiaras tu valoración.

¡Gracias!

Muy buen Aporte :)

Solo una cosita más:

¿Y si quisiera que cada vez que aumente una fecha se bloquee solo la celda en la que se aumento la fecha que más tendría que aumentar al código?

Para eso tendrías que tener la hoja protegida y las celdas bloqueadas. Si ya tienes así la hoja, entonces estos serían los cambios:

Sub PonerFeha()
'Por.Dante Amor
    Set h1 = Sheets("Fecha de Acta")
    h1.Unprotect "abc"
    u = h1.Range("B" & Rows.Count).End(xlUp).Row + 1
    If u < 5 Then u = 5
    h1.Cells(u, "B") = Date
    h1.Protect "abc"
End Sub

cambia "abc" por el password que desees

Respuesta
1

Puedes explicar major lo que intentas hacer por lo que veo en la columna B

Quiere que todos los numero que sean menor que 6 copie la fecha en la misma columna

Cells(Rows. Count, 2).End(xlUp). Row en esta parte le estas diciendo que empiece de abajo para arriba

Si no tiene celda vacías desde la celda b5 hasta la ultima con datos

Yo lo haría así

Sub Macro7()

Sheets("Fecha de Acta").Select

Range("$B$5").Select
Do While ActiveCell <> ""
If ActiveCell < 6 Then
ActiveCell = Date
End If
ActiveCell.Offset(1, 0).Select
Loop

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas