Archive

Posts Tagged ‘StatusBar’

Solución a: el texto de los botones se ve comprimido

July 30, 2011 1 comment

Es muy común que se utilicen controles ActiveX (OLEObjects) en hojas de Excel para ejecutar macros, como lo son los botones. Y también es común sin una causa aparente que después el texto de los bonotes y demás controles sufran un cambio en la apariencia y se noten comprimidos. Como se muetra en la imagen:

image

Tal cambio en el diseño he descubierto que se ‘logra’, por decirlo de algún modo’, cuando utilizamos la función de Excel de ‘Mostrar fórmulas’. Dicho movimiento genera que nuestros controles cambien de tamaño, y al regresar al modo normal, queden como la imagen anterior.

Solución

La solución que propongo es que se le cambie de manera manual el tamaño a los controles y después asignarles el tamaño original, pero esto causaría mucha pérdia de tiempo por que deberá uno por uno.

Por tal motivo he creado un libro de Excel con los controles con todos los controles que sufren cambios y escrito una macro que restablece el diseño de los controles.

Cómo funciona ??

He añadido 9 controles a la hoja y creado una macro que muestra y oculta las fórmulas, para así después utilizas otra macro que restable el diseño.

Imagen del ejemplo

image

Antes

image

Después

Código del ejemplo

Sub RestablecerObjetos()
Dim CuentaObjetos As Integer
'Asignamos la varible que almacenará la cuenta de objetos en la hoja
CuentaObjetos = ActiveSheet.OLEObjects.Count
'Congelamos la pantalla
Application.ScreenUpdating = False
'Hacemos el ciclo que recorrerá cada objeto
For i = 1 To CuentaObjetos
    With ActiveSheet
        'Guardamos en variable el tamaño actual de cada objecto
        AnchoActual = .OLEObjects(i).Width
        'Asignamos un tamaño x a cada objecto
        .OLEObjects(i).Width = "1"
        'Le devolvemos el tamaño a cada objecto
        .OLEObjects(i).Width = AnchoActual
        Application.StatusBar = "Restableciendo " & .OLEObjects(i).Name
    End With
Next i
'Restauramos pantalla y barra de estado
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub

:: Descargar el ejemplo EXCELeINFO – Restablecer tamaño de objetos

Uso de la propiedad StatusBar en vba Excel

July 16, 2011 2 comments

El objeto Application, el cual se refiere a Excel como aplicación, entre sus tantas propiedades tenemos la de StatusBar, la cual puede usarse como un perfecto auxiliar visual al momento de que ejecutamos nuestra macros, ya que muestra un texto definido o variable en la barra de estado de Excel.

Cómo funciona ??

La barra de estado acepta sólo texto, por lo tanto podremos asignarle cualquier valor alfanumérico. StatusBar es una propiedad de Application, así que si tecleamos el nombre del objeto y terminamos con un punto, saldrán todas las propiedades y métodos, incluido la que nos compete.

Imagen de ejemplo

image

Ejemplos

Antes de ver los ejemplos, te comento que muchos programadores utilizan esta propiedad aunada a la propiedad ScreenUpdating, para mostrar el progreso de sus macros sin tener que mostrar todos los pasos de la macro.

Sub LiberarBarraDeEstado()
'Nos permite dejar lista la barra de estado para asignarle nuevos valores
'y/o dejarle el contro a Excel.
Application.StatusBar = False
End Sub
Sub PonerTextoEnBarraDeEstado()
'Definimos una cadena de texto para que se muestre en la barra de estado.
Dim MiValor As String
MiValor = "Ejemplo de texto en barra de estado"
Application.StatusBar = MiValor
End Sub
Sub PonerAlfaNumericoEnBarraDeEstado()
'Definimos una operación matemática para que se muestre en la barra de estado.
Dim Valor1 As Integer, Valor2 As Integer, Resultado As Integer
Dim Texto As String
Valor1 = 10
Valor2 = 40
Resultado = Valor1 + Valor2
Texto = "La suma de " & Valor1 & " y  " & Valor2 & " es igual a " & Resultado
Application.StatusBar = Texto
End Sub
Sub MostrarNombreHojaYArchivo()
'Se mostrará el nombre del archivo y de la hoja activa. Aquí los datos son variables.
Dim NombreArchivo As Variant, NombreHoja As Variant
NombreArchivo = Application.ThisWorkbook.Name
NombreHoja = Application.ActiveSheet.Name
Texto = "Mi archivo se llama " & NombreArchivo & " y la hoja activa se llama " & NombreHoja
Application.StatusBar = Texto
End Sub
Categories: Excel, Trucos, vba Tags: , , , ,