Combinacion de Togglebutton y Proges bar

Yo tengo el sgte codigo de un Togglebutton que me funciona alas maravilla cuando el se ejecuta se empieza a contar desde 1 hasta cincuentamil:

Pero neceito que el progressbar al comenzar la ejecucion deTogglebutton se mueva conjuntamente Togglebutton con los numeros y cuando haga stop se pared tambien, el codigo del Tooglebutton en la userforr es:

Private Sub ToggleButton1_Click()
On Error Resume Next

For i = 1 To 50000

If Me.ToggleButton1.Value = True Then

Me.ToggleButton1.Caption = "OFF"

Me.ToggleButton1.BackColor = vbRed

Else

Me.ToggleButton1.Caption = "ON"

Me.ToggleButton1.BackColor = vbGreen

End If

If Me.TextBox1.Text <= 49999 And Me.ToggleButton1.Caption = "OFF" Then

Me.TextBox1.Text = Me.TextBox1.Text + 1

DoEvents

End If

Next i

Me.ToggleButton1.Caption = "ON"

Me.ToggleButton1.Value = False

End Sub

Private Sub UserForm_Click()

End Sub

Private Sub UserForm_Initialize()
Me.TextBox1.Text = 1
End Sub

 he copiado de ootro programa el cogico de Progressbar 

pero no se como insertarlo:

' PROGRESS BAR CODES
Sub Main()
Dim i, tot As Integer
tot = 5000
For i = 1 To tot
If i Mod 5 = 0 Then
ProgressBar i / tot
End If
Next i
lblDone.Width = 0
lblPct.Visible = False
End Sub
Sub ProgressBar(PctDone As Single)
lblDone.Width = PctDone * (lblRemain.Width - 2)
lblPct.Visible = True
lblPct.Caption = Format(PctDone, "0%")
DoEvents
End Sub

Ademas si fuera posible cada vez que haga stop copiar en una celda el numero que esta en el Textbox

Un sincero saludo

Eusebio

1 respuesta

Respuesta
1

Realiza lo siguiente en tu userform:

  • Crea un ToggleButton1
  • Crea un textbox1
  • Crea un label para el porcentaje y en Name le pones lblPct (cuadro azul en la imagen)
  • Crea un label para el marco y en Name le pones lblRemain (cuadro gris en la imagen), de Height 48 y de Width 360
  • Crea un label para el avance de la barra, en Name lblDone (cuadro verde), de Height 36 y de Width 12

Así se verá en la ejecución:

Pon el siguiente código en tu userform

Private Sub ToggleButton1_Click()
'Act.Por.Dante Amor
    If ToggleButton1.Value Then
        ToggleButton1.Caption = "OFF"
        ToggleButton1.BackColor = vbRed
        Call Main
    End If
    ToggleButton1.Caption = "ON"
    ToggleButton1.BackColor = vbGreen
    Me.ToggleButton1.Value = False
End Sub
'
Private Sub UserForm_Initialize()
'Act.Por.Dante Amor
    Me.TextBox1.Text = 1
    Me.ToggleButton1.Caption = "ON"
    Me.ToggleButton1.BackColor = vbGreen
End Sub
'
Sub Main()
'Act.Por.Dante Amor
' PROGRESS BAR CODES
    tot = 50000
    For i = 1 To tot
        TextBox1 = i
        If i Mod 5 = 0 Then
            Call ProgressBar(i / tot)
        End If
    Next i
    'lblDone.Width = 0
    'lblPct.Visible = False
End Sub
'
Sub ProgressBar(PctDone As Single)
    lblDone.Width = PctDone * (lblRemain.Width - 2)
    lblPct.Visible = True
    lblPct.Caption = Format(PctDone, "0%")
    DoEvents
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Me gustaría que cuando haga click en el Togglebutton se para ambos movimientos y ese % emitirlo a una celda en excel.

ToggleButton

No entiendo a qué te refieres con esto:

Cuando haga click en el Togglebutton se para ambos movimientos

Y el % ya venía en la macro que pusiste. Si no quieres que se vea quita el control del lblpct y todo lo que esté en el código

Esto quiere decir que cuando el Togglebutton este en off se paren los movimientos de ambas barras y en on continué

Si está en ejecución, no puedes presionar el botón nuevamente y detener la ejecución.

Te anexo la actualización

Private Sub ToggleButton1_Click()
'Act.Por.Dante Amor
    If ToggleButton1.Value Then
        ToggleButton1.Caption = "OFF"
        ToggleButton1.BackColor = vbRed
        Call Main
    End If
    ToggleButton1.Caption = "ON"
    ToggleButton1.BackColor = vbGreen
    Me.ToggleButton1.Value = False
End Sub
'
Private Sub UserForm_Initialize()
'Act.Por.Dante Amor
    Me.TextBox1.Text = 1
    Me.ToggleButton1.Caption = "ON"
    Me.ToggleButton1.BackColor = vbGreen
End Sub
'
Sub Main()
'Act.Por.Dante Amor
' PROGRESS BAR CODES
    tot = 50000
    If TextBox1 = 0 Or TextBox1 = "" Then
        ini = 1
    Else
        ini = Val(TextBox1)
    End If
    For i = ini To tot
        TextBox1 = i
        If i Mod 5 = 0 Then
            If ToggleButton1.Caption = "ON" Then Exit Sub
            Call ProgressBar(i / tot)
        End If
    Next i
    If i > tot Then TextBox1 = ""
    'lblDone.Width = 0
    'lblPct.Visible = False
End Sub
'
Sub ProgressBar(PctDone As Single)
    lblDone.Width = PctDone * (lblRemain.Width - 2)
    'lblPct.Visible = True
    'lblPct.Caption = Format(PctDone, "0%")
    DoEvents
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas