Hola dos preguntas

29/03/2006 - 06:32 por JM | Informe spam
Que tal grupo, mi primera pregunta y no veo como dar es que si hay una
funcion que nos diga el ultimo renglon ocupado de una hoja de cálculo.
La siguiente pregunta en una macro como puedo desactivar el letrero de que
si quiero guardar los cambios en un libro nuevo?, la cosa es que no quiero
guardar los cambios y no necesito ese mensaje, Saludos y muchas gracias de
antemano.

Preguntas similare

Leer las respuestas

#1 KL
29/03/2006 - 12:42 | Informe spam
Hola JM,

funcion que nos diga el ultimo renglon ocupado de una hoja de cálculo



Supongo que te refieres a VBA. Hay varias tecnicas de hacerlo:

1) Metodo Find. Supone que la ultima celda escrita puede estar en CUALQUIER COLUMNA e IGNORA LOS FORMATOS.

Ejemplo (lamentablemente desconozco la autoria del codigo):

Public Function LastRow(Optional ws As Worksheet) As Long
If ws Is Nothing Then Set ws = ActiveSheet
Set rng = ws.Cells
On Error Resume Next
LastRow = Intersect( _
rng.Find("*", rng(1), xlValues, xlWhole, xlByRows, _
xlPrevious).EntireRow, _
rng.Find("*", rng(1), xlValues, xlWhole, xlByColumns, _
xlPrevious).EntireColumn).Row
If LastRow = 0 Then LastRow = 1
End Function

2) Propiedad End. Supone que la ultima celda escrita puede estar en UNA COLUMNA ESPECIFICA e IGNORA LOS FORMATOS.

Ejemplo (asume que el ultimo registro siempre tendria algo en la columna [A]):

Sub test()
MgBox Range("A65536").End{xlUp).Row
End Sub


3) Propiedad UsedRange. Supone que la ultima celda escrita puede estar en CUALQUIER COLUMNA e INCLUYE CELDAS VACIAS CON FORMATOS. Ademas tiene un "bug" - NO SE ACTUALIZA automaticamente al eliminar filas dentro del rango usado por lo que requiere de una instruccion adicional.

Ejemplo:

Sub test()
x = ActiveSheet.UsedRange.Rows 'actualizando el rango
With ActiveSheet.UsedRange
MsgBox .Rows.Count + .Row - 1
End With
End Sub

4) Metodo SpecialCells. Supone que la ultima celda escrita puede estar en CUALQUIER COLUMNA e INCLUYE CELDAS VACIAS CON FORMATOS. Ademas tiene un "bug" - NO SE ACTUALIZA automaticamente al eliminar filas dentro del rango usado por lo que requiere de una instruccion adicional.

Ejemplo:

Sub test()
x = ActiveSheet.UsedRange.Rows 'actualizando el rango
MsgBox ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
End Sub

desactivar el letrero de que
si quiero guardar los cambios en un libro nuevo?...
...no quiero guardar los cambios y no necesito ese mensaje



Sub test()
ActiveWorkbook.Close SaveChanges:=False
End Sub

Saludos,
KL
Respuesta Responder a este mensaje
#2 JM
29/03/2006 - 23:36 | Informe spam
Muchas gracias KL
Ahora mismo lo pruebo,
Saludos


"KL" escribio en el mensaje
news:%233I$
Hola JM,

funcion que nos diga el ultimo renglon ocupado de una hoja de cálculo



Supongo que te refieres a VBA. Hay varias tecnicas de hacerlo:

1) Metodo Find. Supone que la ultima celda escrita puede estar en CUALQUIER
COLUMNA e IGNORA LOS FORMATOS.

Ejemplo (lamentablemente desconozco la autoria del codigo):

Public Function LastRow(Optional ws As Worksheet) As Long
If ws Is Nothing Then Set ws = ActiveSheet
Set rng = ws.Cells
On Error Resume Next
LastRow = Intersect( _
rng.Find("*", rng(1), xlValues, xlWhole, xlByRows, _
xlPrevious).EntireRow, _
rng.Find("*", rng(1), xlValues, xlWhole, xlByColumns, _
xlPrevious).EntireColumn).Row
If LastRow = 0 Then LastRow = 1
End Function

2) Propiedad End. Supone que la ultima celda escrita puede estar en UNA
COLUMNA ESPECIFICA e IGNORA LOS FORMATOS.

Ejemplo (asume que el ultimo registro siempre tendria algo en la columna
[A]):

Sub test()
MgBox Range("A65536").End{xlUp).Row
End Sub


3) Propiedad UsedRange. Supone que la ultima celda escrita puede estar en
CUALQUIER COLUMNA e INCLUYE CELDAS VACIAS CON FORMATOS. Ademas tiene un
"bug" - NO SE ACTUALIZA automaticamente al eliminar filas dentro del rango
usado por lo que requiere de una instruccion adicional.

Ejemplo:

Sub test()
x = ActiveSheet.UsedRange.Rows 'actualizando el rango
With ActiveSheet.UsedRange
MsgBox .Rows.Count + .Row - 1
End With
End Sub

4) Metodo SpecialCells. Supone que la ultima celda escrita puede estar en
CUALQUIER COLUMNA e INCLUYE CELDAS VACIAS CON FORMATOS. Ademas tiene un
"bug" - NO SE ACTUALIZA automaticamente al eliminar filas dentro del rango
usado por lo que requiere de una instruccion adicional.

Ejemplo:

Sub test()
x = ActiveSheet.UsedRange.Rows 'actualizando el rango
MsgBox ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
End Sub

desactivar el letrero de que
si quiero guardar los cambios en un libro nuevo?...
...no quiero guardar los cambios y no necesito ese mensaje



Sub test()
ActiveWorkbook.Close SaveChanges:=False
End Sub

Saludos,
KL
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida