tag:blogger.com,1999:blog-4102940343073558754.post5269405006854492210..comments2022-11-07T11:23:24.243-03:00Comments on ✔ Programação GLOBAL®: VBA Excel - Barra de Progresso na Barra de Status - Show a Progress Meter in the Status BarSales Force Effectivenesshttp://www.blogger.com/profile/02329511147728687092noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-4102940343073558754.post-34843214160707229082012-01-04T08:25:41.300-02:002012-01-04T08:25:41.300-02:00Algunhas modificacións feitas 'a posteriori...Algunhas modificacións feitas 'a posteriori', agora xá parece profesional de máis, :)).<br /><br />Option Explicit<br />Public intPorcentajeEjecutadoBarraEstado As Integer<br />Public strRelojBarraEstado As String<br /><br />Public Function EjemploBarraProgresoEstado()<br /> Dim lgContador As Long, lgContadorMaximo As Long, lgContadorSalto As Long, lgContadorAuxiliar As Long<br /> Static intIncrementaPorcentajeEjecutado As Integer<br /> <br /> 'Muestra la Barra de Estado<br /> Let Application.DisplayStatusBar = True<br /> <br /> Call BarraProgresoBarraEstado(0, "Arrancando...", 0, True) 'Llamada a la funcion para arrancar<br /> <br /> lgContadorMaximo = 10000000<br /> intIncrementaPorcentajeEjecutado = 0<br /> lgContadorSalto = (lgContadorMaximo / 100)<br /> Call BarraProgresoBarraEstado(intIncrementaPorcentajeEjecutado) 'Llamada a la funcion para mostrar el primer avance<br /> For lgContador = 1 To (lgContadorMaximo + 1)<br /> lgContadorAuxiliar = lgContadorAuxiliar + 1<br /> If lgContadorAuxiliar > lgContadorSalto Then Call BarraProgresoBarraEstado(1, "Por favor, espere..."): lgContadorAuxiliar = 0<br /> Next<br /> <br /> intPorcentajeEjecutadoBarraEstado = 0<br /> Let Application.StatusBar = ""<br /><br />End Function<br /><br />Public Function BarraProgresoBarraEstado(ByRef intIncrementaPorcentajeEjecutado As Integer, _<br /> Optional ByRef strTexto As String = "", _<br /> Optional ByRef intInicial As Integer = 0, _<br /> Optional ByRef bReinicia As Boolean = False)<br /> <br /> Dim intRespuesta As Integer<br /> <br /> Dim strMostrarTexto As String<br /> <br /> Select Case strRelojBarraEstado<br /> Case "": strRelojBarraEstado = ""<br /> Case "|": strRelojBarraEstado = "/"<br /> Case "/": strRelojBarraEstado = "-"<br /> Case "-": strRelojBarraEstado = "\"<br /> Case "\": strRelojBarraEstado = "|"<br /> End Select<br /> <br />'Para visualizar los ChrW [Menu Inicio --> Programas --> Accesorios --> Mapa de caracteres]<br /> If bReinicia Then 'Si es un contador nuevo, lo reinicia aquí.<br /> If strRelojBarraEstado = "" Then strRelojBarraEstado = "\"<br /> intPorcentajeEjecutadoBarraEstado = 0<br /> Let Application.StatusBar = strRelojBarraEstado & " " & strTexto<br /> Else<br /> If intInicial > 0 Then intPorcentajeEjecutadoBarraEstado = intInicial<br /> If intPorcentajeEjecutadoBarraEstado > 100 Then Beep: GoTo ExcesoPorcentaje 'Evita que supere el 100%<br /> strMostrarTexto = strRelojBarraEstado & " " & strTexto & " (" & intPorcentajeEjecutadoBarraEstado & " % ejecutado) " & _<br /> VBA.String(intPorcentajeEjecutadoBarraEstado, VBA.ChrW(&H2588)) & _<br /> VBA.String(100 - intPorcentajeEjecutadoBarraEstado, VBA.ChrW(&H2591))<br /> If VBA.Len(strMostrarTexto) > 200 Then Beep: GoTo ExcesoTexto 'Evita que se supere el límite de texto de la barra de tareas<br /> Let Application.StatusBar = strMostrarTexto<br /> 'Añade una tesela, para la siguiente iteración (comienza en '0')<br /> intPorcentajeEjecutadoBarraEstado = intPorcentajeEjecutadoBarraEstado + intIncrementaPorcentajeEjecutado<br /> End If<br /> Exit Function<br /><br />ExcesoPorcentaje:<br /> intRespuesta = MsgBox("Se ha excedido el 100% ejecutado", vbCritical, "A D V E R T E N C I A")<br />ExcesoTexto:<br /> intRespuesta = MsgBox("Se ha excedido el límite de texto que admite la barra de estado", vbCritical, "A D V E R T E N C I A")<br />End Functionxoan.ninguennoreply@blogger.comtag:blogger.com,1999:blog-4102940343073558754.post-86499099677315176202011-12-25T19:28:51.147-02:002011-12-25T19:28:51.147-02:00Despois de fitar para a súa idea, decateime de cóm...Despois de fitar para a súa idea, decateime de cómo implementar unha barra de progreso sinxela que fose moito máis rápida que outra que tiña a base de formularios. <br />Precisei atopar algunha información adicional sobor o ChrW. De todas maneiras Moito obrigado, Thank you so much for your tip.<br /><br />Sub BarraProgresoProfesional()<br />'http://inanyplace.blogspot.com/<br />' Show a Progress Meter in the Status Bar<br /> Dim intPorcentajeEjecutado As Integer<br /> Dim intTeselasBarraProgreso As Integer<br /> <br /> Let Application.DisplayStatusBar = True<br /> <br /> For intPorcentajeEjecutado = 0 To 100<br /> If (intPorcentajeEjecutado Mod 10) = 0 Then<br /> VBA.DoEvents<br />' Application.Wait Now + TimeValue("00:00:01")<br /> 'Para visualizar los ChrW [Menu Inicio --> Programas --> Accesorios --> Mapa de caracteres]<br /> Let Application.StatusBar = VBA.String(intTeselasBarraProgreso, VBA.ChrW(&H2588)) & _<br /> " (" & intPorcentajeEjecutado & " % ejecutado)" & " - Por favor, espere..."<br /> intTeselasBarraProgreso = intTeselasBarraProgreso + 1<br /> End If<br /> Next intPorcentajeEjecutado<br /> <br /> Let Application.StatusBar = False<br /><br />End Subxoan.ninguennoreply@blogger.com