UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se pueden hacer consultas de Excel o VBA por mensaje privado.
Utiliza el botón buscar del foro y te ahorras tiempo para obtener "ayuda".

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

1RESUELTO Problema con Macro el 17/07/13, 11:47 am

gestor


Buen día, si pudieran ayudarme en resolver el siguiente problema:

Tengo esta macro que inserté dentro un modulo que quisiera funcionara al abrir el archivo, sin embargo no se como hacerlo y también  este mismo me marca "Error de compilación: No se ha definido Sub o Fuction"

Sub laser()
On Error Resume Next
velocidad = 0
colores = Array(25, 8, 33, 23, 32, 25)
    With [B3]
    .Value = "DATOS"
    .Font.ColorIndex = 25
      For ciclos = 1 To 20
            For i = 0 To Len(.Text)
              For x = 0 To UBound(colores)
                 .Characters(x + i, 1).Font.ColorIndex = colores(x)
                 .Characters(Len(.Text) - x - i, 1).Font.ColorIndex = colores(x)
                DoEvents
                Sleep velocidad
             Next
           Next
        Next
    End With
End Sub

Esta macro la tome de la red y me interesa aplicarla a mi nececidad.
Gracias.

2RESUELTO Re: Problema con Macro el 17/07/13, 07:46 pm

tyno


Hola Gestor.
El problema de tu macro esta en la instrucción "sleep" que en realidad no es una instrucción de VBA sino que es una API de Windows, básicamente lo que esto hace es que Windows y no Excel ralentice la macro en tu caso.
Parta que funcione esta instrucción debes declararla primeramente de esta manera, antes del codigo Sub Laser: 
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


De manera que debería quedar asi:

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Sub laser()
On Error Resume Next
velocidad = 50
colores = Array(25, 8, 33, 23, 32, 25)
    With [B3]
    .Value = "DATOS"
    .Font.ColorIndex = 25
      For ciclos = 1 To 20
            For i = 0 To Len(.Text)
              For x = 0 To UBound(colores)
                 .Characters(x + i, 1).Font.ColorIndex = colores(x)
                 .Characters(Len(.Text) - x - i, 1).Font.ColorIndex = colores(x)
                DoEvents
                Sleep velocidad
             Next
           Next
        Next
    End With
End Sub

3RESUELTO Re: Problema con Macro el 18/07/13, 03:27 pm

gestor


Muchas gracias Tyno por tu orientación y ayuda, funciona correctamente ahora. Crees pueda ser posible que se ejecute al abrir el archivo? que hay que modificarse (si es que se pueda)

Gracias.

4RESUELTO Re: Problema con Macro el 18/07/13, 06:21 pm

tyno


Hola Gestor.

Para que esta macro se ejecute al abrir el archivo,  en ThisWorKBook (dentro del editor de macros ) tendrías que pegar este código:

Private Sub Workbook_Open()
Sheets("Hoja1").Activate
laser
End Sub


Fijate que dice: Sheets ("Hoja1").Activate , con esto estoy indicando a la macro que al abrir el archivo este se abra en la Hoja1 y luego ejecute el proceso llamado laser, en caso que el nombre de tu Hoja sea otro solo cambias "Hoja1" por el nombre que sea y entre comillas.

Saludos.

5RESUELTO Re: Problema con Macro el 19/07/13, 11:22 am

gestor


Excelente Tyno muchas gracias.
Saludos

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.