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.
 

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

Preguntas similares