¿como hago esto en Excel?

16/10/2007 - 01:39 por vm_tapia | Informe spam
Esto me lo encontre en una pagina para Access, la pregunta es ¿como hago lo
mismo en Excel?

'**********************************************************
' Este sería un método para simular el efecto "marquesina
' desplazándose" que aparece en las páginas web pero en un
' control de un formulario.
'
' Para el ejemplo que emplearemos aquí, en un formulario
' creamos una etiqueta llamada "lblMarquesina" y con la
' longitud que mejor nos parezca, y que albergará el texto
' desplazándose.
'
' En la propiedad "Intervalo de cronometro" del formulario
' ponemos 100.
'
' Creamos una variable global para el formulario
'
Dim Blancos As Integer
'
' Después asociamos este código al evento Load del
' formulario (utilizaremos aquí el método
' TwipsFromFont del objeto WizHook
'
Private Sub Form_Load()
Dim wzFontName As String
Dim wzSize As Long
Dim wzWeight As Long
Dim wzItalic As Boolean
Dim wzUnderline As Boolean
Dim wzCch As Long
Dim wzCaption As String
Dim wzMaxWidthCch As Long
Dim wzdx As Long
Dim wzdy As Long

WizHook.Key = 51488399

wzFontName = Me.lblMarquesina.FontName
wzSize = Me.lblMarquesina.FontSize
wzWeight = Me.lblMarquesina.FontWeight
wzItalic = Me.lblMarquesina.FontItalic
wzUnderline = Me.lblMarquesina.FontUnderline
wzCaption = " "

' calculamos cuantos twips tiene un blanco
WizHook.TwipsFromFont wzFontName, wzSize, wzWeight, _
wzItalic, wzUnderline, wzCch, _
wzCaption, wzMaxWidthCch, _
wzdx, wzdy

'calculamos a cuantos blancos corresponde la longitud
'total del control que contendrá la marquesina
Blancos = Me.lblMarquesina.Width / wzdx
fraseTMP = ""

End Sub
'
' Después escribimos asociamos este otro código al avento
' Timer del formulario
'
Private Sub Form_Timer()
Dim cadena As String

' se asigna una cadena de texto para que aparezca
' en la marquesina
cadena = "Método para simular el efecto marquesina "
cadena = cadena & "desplazándose en el control de "
cadena = cadena & "un formulario. Juan M. Afán Ribera"

' la cadena será igual a la cantidad proporcional de
' blancos, que es la longitud del control, más la
' cadena de texto. De esta manera se construye el
' efecto de que la cadena de texto "aparezca por la
' derecha del control
cadena = String(Blancos, " ") & cadena
Me.lblMarquesina.Caption = Marquesina(cadena)

End Sub
'************** Fin código formulario *********************
'
' Luego, en un módulo estandar deberíamos declarar una
' variable pública
'
Public fraseTMP As String
'
' seguida de esta función, que lo que hace es ir
' decrementando la frase pasada como parametro en un
' caracter cada vez. Cuando la variable fraseTMP ya no
' contenga ningún carácter (sea igual a ""), se vuelve
' a empezar desde el principio.
'
' El efecto conseguido sería algo así:
'
' " "
' " T"
' " Te"
' " Tex"
' " Text"
' " Texto"
' " Texto "
' " Texto "
' "Texto "
' "exto "
' "xto "
' "to "
' "o "
' " "
'
' ... y vuelta a empezar
'
' Juan M. Afán de Ribera
' Creado: Marzo 2003
' 1a revisión: Septiembre 2003
'
Function Marquesina(frase As String) As String

If fraseTMP = "" Then
fraseTMP = frase
Else
fraseTMP = Right(fraseTMP, Len(fraseTMP) - 1)
End If

Marquesina = fraseTMP

End Function
'**************** Fin código módulo ***********************
 

Leer las respuestas

#1 Héctor Miguel
16/10/2007 - 02:44 | Informe spam
hola, !

Esto me lo encontre en una pagina para Access, la pregunta es como hago lo mismo en Excel?
'**********************************************************
' Este seria un metodo para simular el efecto "marquesina desplazandose"... en un control de un formulario...



1) toma en cuenta que los tableros informativos (del tipo que mencionas)...
son dispositivos "dedicados" a desplegar la informacion deslizante que se les indique

2) en excel se puede "simular" (pero tu excel quedara "dedicado" a servir de banner mientras el codigo se ejecuta)

a) inserta un cuadro de texto (desde la barra de herramientas de dibujo) y dale "forma" (color, fuente, dimensiones, ...)
para que de cabida +/- a 25 caracteres (despues de aplicados los formatos de tu preferencia)
(haz pruebas tambien estableciendo si se auto-ajusta el ancho o lo dejas fijo)

b) escribe el texto "deslizante" en la celda 'A1'
(p.e.: Flash Informativo !!! ... Estas son las noticias de ultima hora… !!!)

c) copia/pega las siguientes lineas en un modulo de codigo normal y despues haces pruebas con la macro...

Private Declare Sub Retardo Lib "kernel32" Alias "Sleep" (ByVal Milisegundos As Long)
Sub Escribiendo_en_TextBox()
Dim Nuevo As Byte, Salto As Byte, ShowTime As String, Mensaje As String
With ActiveSheet.Shapes("cuadro de texto 1").TextFrame.Characters
.Text = "": Salto = 1
ShowTime = String(20, " ") & [a1] & String(30, " ")
For Nuevo = 1 To Len(ShowTime)
Mensaje = Mensaje & Mid(ShowTime, Nuevo, 1)
If Len(Mensaje) > 25 Then Salto = Salto + 1
.Text = Mid(Mensaje, Salto)
DoEvents
Retardo 100 ' si pones 1000 es el equivalente de 1 segundo [mil milisegundos] '
Next
End With
End Sub

si despues quieres trasladar/adaptar/convertir/... el codigo para un formulario (no debera ser tan dificil) ;)

saludos,
hector.

Preguntas similares