none
Uso de ToggleButton num userform ligado à uma planilha! RRS feed

  • Pergunta

  • Olá gente!

    Olha só, tenho um UserForm1 com 5 ToggleButton1. Sendo que cada um deles podem ser acionados ou não. Se um deles forem acionados, eu queria que o texto escrito em seus respectivos captions, aparecessem na mesma sequência em que estão dispostos no userform, a partir da célula B2 seguindo em linha.
    Será que isso é possível.
    Se for, por favor me ajudem!
    quarta-feira, 3 de fevereiro de 2010 20:05

Respostas

  • Vê se assim dá certo


    Private Sub ToggleButton1_Click()
       VERIFICA
    End Sub

    Private Sub ToggleButton2_Click()
        VERIFICA
    End Sub

    Private Sub ToggleButton3_Click()
        VERIFICA
    End Sub

    Private Sub ToggleButton4_Click()
        VERIFICA
    End Sub

    Private Sub ToggleButton5_Click()
         VERIFICA
    End Sub

    Private Sub VERIFICA()
        Range("B2:F2").ClearContents
        n = 2
        For i = 0 To Me.Controls.Count - 1
            If TypeName(Me.Controls(i)) = "ToggleButton" Then
                If Me.Controls(i).Value = True Then
                    Cells(2, n) = Me.Controls(i).Caption
                    n = n + 1
                Else
                    Cells(2, n) = ""
                End If
            End If
        Next
    End Sub

    Private Sub UserForm_Initialize()
        ThisWorkbook.Worksheets("Plan1").Activate
        ToggleButton1.Caption = "01/02"
        ToggleButton2.Caption = "02/02"
        ToggleButton3.Caption = "03/02"
        ToggleButton4.Caption = "04/02"
        ToggleButton5.Caption = "15/02"
    End Sub

    • Marcado como Resposta Iranilce quinta-feira, 4 de fevereiro de 2010 14:09
    quinta-feira, 4 de fevereiro de 2010 13:16

Todas as Respostas

  • Não entendi muito bem...
    Você quer que o caption do TB1 que for acionado fique com o valor na celula B2....isso se ele é o 1º controle...
    TB2 que for acionado fique com o valor na celula C2....

    E quando ele for desacionado??
    Explica denovo..
    quarta-feira, 3 de fevereiro de 2010 20:18
  • É mais ou menos isso.
    Vou exemplificar para entender melhor: Se o TB1 é acionado o caption dele fica na célula B2 , aí.. vamos dizer que o TB2 não é acionado e o TB3 é acionado então o caption dele ficará na célula B3 , continuando o exemplo, o TB4 não foi acionado, o TB5 foi acionado, então o valor do seu caption ficará na célula seguinte da linha, ou seja, a célula B4 .

    Será que podemos codificar isso???

    quarta-feira, 3 de fevereiro de 2010 20:43
  • Olá...
    Tente assim

    Private Sub ToggleButton1_Click()
       VERIFICA
    End Sub

    Private Sub ToggleButton2_Click()
        VERIFICA
    End Sub

    Private Sub ToggleButton3_Click()
        VERIFICA
    End Sub

    Private Sub ToggleButton4_Click()
        VERIFICA
    End Sub

    Private Sub VERIFICA()
            n = 2
            For i = 0 To 3
                If TypeName(Me.Controls(i)) = "ToggleButton" Then
                    If Me.Controls(i).Value = True Then
                        Me.Controls(i).Caption = Cells(n, 2)
                        n = n + 1
                    Else
                        Me.Controls(i).Caption = ""
                    End If
                End If
            Next
    End Sub
    Até mais...

    • Editado EvangelistaLion quinta-feira, 4 de fevereiro de 2010 12:11 ajuste
    quinta-feira, 4 de fevereiro de 2010 12:08
  • Olá, bom dia meu caro colega!

    Infelizmente sua resposta não deu certo para o meu projeto. Mas fuçando aqui no excel encontrei uma solução, repare no código abaixo que eu coloquei no userform:

    Private Sub CommandButton1_Click()
    arrumar_data
    End Sub

    Private Sub ToggleButton1_Click()
    If ToggleButton1.Value = True Then
    ActiveCell.Offset(-1, -1).Value = "01/02"
    Else
    ActiveCell.Offset(-1, -1).Value = ""
    End If
    End Sub

    Private Sub ToggleButton2_Click()
    If ToggleButton2.Value = True Then
    ActiveCell.Offset(-1, 0).Value = "02/02"
    Else
    ActiveCell.Offset(-1, 0).Value = ""
    End If
    End Sub

    Private Sub ToggleButton3_Click()
    If ToggleButton3.Value = True Then
    ActiveCell.Offset(-1, 1).Value = "03/02"
    Else
    ActiveCell.Offset(-1, 1).Value = ""
    End If
    End Sub

    Private Sub ToggleButton4_Click()
    If ToggleButton4.Value = True Then
    ActiveCell.Offset(-1, 2).Value = "04/02"
    Else
    ActiveCell.Offset(-1, 2).Value = ""
    End If
    End Sub

    Private Sub ToggleButton5_Click()
    If ToggleButton5.Value = True Then
    ActiveCell.Offset(-1, 3).Value = "15/02"
    Else
    ActiveCell.Offset(-1, 3).Value = ""
    End If
    End Sub

    Private Sub UserForm_Initialize()
    ThisWorkbook.Worksheets("Plan1").Activate
            Range("B2").Select
    ToggleButton1.Caption = "01/02"
    ToggleButton2.Caption = "02/02"
    ToggleButton3.Caption = "03/02"
    ToggleButton4.Caption = "04/02"
    ToggleButton5.Caption = "15/02"
    End Sub


    Coloquei no Módulo1 essa macro aqui:

    Sub arrumar_data()
    '
    ' arrumar_data Macro
    '

    '
        Range("A1:BC1").Select
        ActiveWindow.ScrollColumn = 35
        ActiveWindow.ScrollColumn = 34
        ActiveWindow.ScrollColumn = 33
        ActiveWindow.ScrollColumn = 32
        ActiveWindow.ScrollColumn = 31
        ActiveWindow.ScrollColumn = 30
        ActiveWindow.ScrollColumn = 28
        ActiveWindow.ScrollColumn = 26
        ActiveWindow.ScrollColumn = 25
        ActiveWindow.ScrollColumn = 24
        ActiveWindow.ScrollColumn = 22
        ActiveWindow.ScrollColumn = 21
        ActiveWindow.ScrollColumn = 19
        ActiveWindow.ScrollColumn = 17
        ActiveWindow.ScrollColumn = 16
        ActiveWindow.ScrollColumn = 15
        ActiveWindow.ScrollColumn = 14
        ActiveWindow.ScrollColumn = 13
        ActiveWindow.ScrollColumn = 12
        ActiveWindow.ScrollColumn = 11
        ActiveWindow.ScrollColumn = 10
        ActiveWindow.ScrollColumn = 9
        ActiveWindow.ScrollColumn = 8
        ActiveWindow.ScrollColumn = 7
        ActiveWindow.ScrollColumn = 6
        ActiveWindow.ScrollColumn = 5
        ActiveWindow.ScrollColumn = 4
        ActiveWindow.ScrollColumn = 3
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.ScrollColumn = 1
        ActiveWorkbook.Worksheets("Plan1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Plan1").Sort.SortFields.Add Key:=Range("A1:BC1"), _     'tem várias colunas selecionadas, pois vou precisar de vários togglebutton's
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Plan1").Sort
            .SetRange Range("A1:BC1")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlLeftToRight
            .SortMethod = xlPinYin
            .Apply
        End With
        Range("B2").Select
    End Sub


    De qualquer forma, agradeço a atenção e ajuda dispensada a mim.
    Fique com Deus!
    quinta-feira, 4 de fevereiro de 2010 12:50
  • oLÁ....É QUE INVERTI OS CAPTIONS..

    Private Sub ToggleButton1_Click()
       VERIFICA
    End Sub

    Private Sub ToggleButton2_Click()
        VERIFICA
    End Sub

    Private Sub ToggleButton3_Click()
        VERIFICA
    End Sub

    Private Sub ToggleButton4_Click()
        VERIFICA
    End Sub

    Private Sub VERIFICA()
            Range("B2:B5").Clear
            n = 2
            For i = 0 To 3
                If TypeName(Me.Controls(i)) = "ToggleButton" Then
                    If Me.Controls(i).Value = True Then
                        Cells(n, 2) = Me.Controls(i).Caption
                        n = n + 1
                    Else
                        Cells(n, 2) = ""
                    End If
                End If
            Next
    End Sub

    quinta-feira, 4 de fevereiro de 2010 12:58
  • Agora to vendo o seu aqui e to entendendo melhor......na verdade é por colunas e não por linhas como você disse....deixa eu fazer de outro jeito agora..

    quinta-feira, 4 de fevereiro de 2010 13:02
  • É quase isso, meu amigo. Mas só que eu queria que os dados aparecessem na linha de B2 à E2.

    Até mais...
    quinta-feira, 4 de fevereiro de 2010 13:07
  • Vê se assim dá certo


    Private Sub ToggleButton1_Click()
       VERIFICA
    End Sub

    Private Sub ToggleButton2_Click()
        VERIFICA
    End Sub

    Private Sub ToggleButton3_Click()
        VERIFICA
    End Sub

    Private Sub ToggleButton4_Click()
        VERIFICA
    End Sub

    Private Sub ToggleButton5_Click()
         VERIFICA
    End Sub

    Private Sub VERIFICA()
        Range("B2:F2").ClearContents
        n = 2
        For i = 0 To Me.Controls.Count - 1
            If TypeName(Me.Controls(i)) = "ToggleButton" Then
                If Me.Controls(i).Value = True Then
                    Cells(2, n) = Me.Controls(i).Caption
                    n = n + 1
                Else
                    Cells(2, n) = ""
                End If
            End If
        Next
    End Sub

    Private Sub UserForm_Initialize()
        ThisWorkbook.Worksheets("Plan1").Activate
        ToggleButton1.Caption = "01/02"
        ToggleButton2.Caption = "02/02"
        ToggleButton3.Caption = "03/02"
        ToggleButton4.Caption = "04/02"
        ToggleButton5.Caption = "15/02"
    End Sub

    • Marcado como Resposta Iranilce quinta-feira, 4 de fevereiro de 2010 14:09
    quinta-feira, 4 de fevereiro de 2010 13:16
  • Agora sim, EvangelistaLion, deu tudo certo.
    Vc conseguiu fazer sem usar a macro que criei.


    Ficou 100%!!!!!

    Abraços! e fique com Deus!
    quinta-feira, 4 de fevereiro de 2010 13:39
  • Que bom Iranilce....Não se esqueça de marcar como respondida para fechar o post...Abraços, vc tbm..
    quinta-feira, 4 de fevereiro de 2010 13:43