Valor de altura de filas en excel

Quisiera saber si existe alguna función o alguna macro que me permita obtener el valor de la altura de determinada fila en una celda de la misma de tal manera que pueda sumar dichos valores.
Gracias
{"lat":-12.0326470208318,"lng":-77.0697999000549}

1 respuesta

Respuesta
1
Existe una función llamada RowHeight que retorna el tamaño de una fila especifica
Worksheets("Hoja1"). Rows(1). RowHeight
Gracias experto Desenex41 por la respuesta pero olvide mencionar que no se mucho de macros, trate de utilizar la fórmula enviada de la siguiente manera: En el editor de Visual basic / VBAProject(Libro1) / Microsoft excel objetos / Hoja1
En la ventana de la derecha ubique en la pestaña la opción Woorksheet y coloque la opción enviada de la siguiente manera:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Worksheets("Hoja1").Rows(1).RowHeight
End Sub
Una vez cerrada en la hoja de excel llame a la formula =RowHeight(B19) y me devolvio : #¿NOMBRE?. No se si el procedimiento es el correcto. Te agradecería me pudieras orientar.
Primero debes aclarar que quieres hacer con la instrucción RowHeight esta propiedad según la ayuda retorna la altura de todas las filas en un rango especifico.
¿Qué necesitas hacer con RowHeigt? ; Para que tengas una idea más clara selecciona una fila cualquiera en una hoja de excel dale clic al botón derecho del ratón y en el menu contextual selecciona "Row Height..." cambia el valor que esta a allí que es 12,5 a 20 y ve el resultado
Disculpa, creo que no me deje entender, permite exponerlo de otra manera: lo que necesito es que ubicándome en una determinada celda pueda aplicar alguna función que me devuelva la altura de dicha fila (que por defecto es 12.75 ó 17 pixeles), la altura de las filas se modifican fácilmente de manera manual, y si hago alguna modficacion en la altura de la fila, la fórmula devuelva el valor modificado.
Espero que me haya dejado entender esta vez, mil gracias por la atención y ojala puedas ayudarme.
Coloca en el evento "Worksheet_Change" de la "Hoja1" este código para mostrar la altura de la fila cuando escribas algo en la celda "A1" y presiones "Enter" o "Tabulador" adicinalmente colocare la altura en la celda "B1"
If Not Application.Intersect(Target, Range("A4")) Is Nothing Then
    If ActiveWorkbook.ActiveSheet.Name = "Sheet1" Or ActiveWorkbook.ActiveSheet.Name = "Hoja1" Then
        If Target.Value <> "" Then
            If ActiveWorkbook.ActiveSheet.Name = "Sheet1" Then
                MsgBox "Altura: " & Target.Rows.RowHeight
                Worksheets("Sheet1").Cells(Target.Row, Target.Column + 1) = Target.Rows.RowHeight
            End If
            If ActiveWorkbook.ActiveSheet.Name = "Hoja1" Then
                MsgBox "Altura: " & Target.Rows.RowHeight
                Worksheets("Hoja1").Cells(Target.Row, Target.Column + 1) = Target.Rows.RowHeight
            End If
        End If
    End If
End If

quedaria de esta forma:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A4")) Is Nothing Then
    If ActiveWorkbook.ActiveSheet.Name = "Sheet1" Or ActiveWorkbook.ActiveSheet.Name = "Hoja1" Then
        If Target.Value <> "" Then
            If ActiveWorkbook.ActiveSheet.Name = "Sheet1" Then
                MsgBox "Altura: " & Target.Rows.RowHeight
                Worksheets("Sheet1").Cells(Target.Row, Target.Column + 1) = Target.Rows.RowHeight
            End If
            If ActiveWorkbook.ActiveSheet.Name = "Hoja1" Then
                MsgBox "Altura: " & Target.Rows.RowHeight
                Worksheets("Hoja1").Cells(Target.Row, Target.Column + 1) = Target.Rows.RowHeight
            End If
        End If
    End If
End If
End Sub


Espero que sea útil...
Disculpa no lo coloque en la celda "A1" si no en la "A4" para que coloque la altura en la celda "B4".
Si quieres cambia en el código donde aparece "A4" a "A1" y se aparecerá la altura en la celda "B1"
Lo probé en la celda "A4" y te había dicho que era en la "A1", fue mi error disculpa la equivocación
Muchas gracias experto!
Esta respuesta si me ayudo, solo dos consulta más si no es molestia:
- ¿Si necesito hacerlo para las primeras 50 filas como tendría que hacer la macro? ¿Una para cada fila?
- ¿La macro solo queda instalada en el libro1?, ¿Si yo la necesito para otro libro debo grabarla en el libro que abra?
Mil gracias por la atención y luego de esto finalizo con mis preguntas.
Si por ejemplo necesitas que la rutina que te envíe se aplique para las 50 primeras filas de las columnas A;B;C;D solo debes colocar esto en el primer If de la rutina:
If Not Application.Intersect(Target, Range("A1:D50")) Is Nothing Then
Y se aplicara para ese rango de celdas que va desde las "A1" hasta la "D50", puedes ampliar las columnas si por ejemplo quieres que llegue hasta la "G50" o "M50" solo debes colocar:
If Not Application.Intersect(Target, Range("A1:G50")) Is Nothing Then
ó
If Not Application.Intersect(Target, Range("A1:M50")) Is Nothing Then
En referencia a que si la macro queda solo en el Libro1, Hoja1 ó la Hoja donde la hayas colocado si allí queda grabada.
Si la necesitas en otro archivo de excel (Libro2.xls por ejemplo) debes grabarla en la Hoja que la necesites (Hoja1, Hoja2, Hoja3...) en el mismo evento y con el mismo código y funcionara

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas