Ir para conteúdo
Fórum Script Brasil
  • 0

Optionbutton


alexdureggae

Pergunta

11 respostass a esta questão

Posts Recomendados

  • 0
Guest Luciano.

E aí Alex, tudo tranquilo.

Experimente separar os options colocando-os dentro de frames e depois note que

eles assumen comportamentos diferentes.

beleza cara.

Até mais.

Link para o comentário
Compartilhar em outros sites

  • 0

Fala galera, firme?

Para não abrir um novo, vou aproveitar esse tópico...

Tenho um frame, coloquei 3 optionButton's dentro dele e preciso fazer o seguinte: Limpar todos eles.

Tem como fazer de limpar todos ao mesmo tempo, sem ir "limpando" um a um?

Tipo:

objOption1.Value = False
objOption2.Value = False
objOption3.Value = False
Existe uma outra forma mais prática? Não sei se no VB existe algo como o eval do JavaScript, onde eu poderia fazer ALGO assim (como poderia ser em VBA :P):
for i = 1 to 3
   eval("objOption"& i).Value = False
next

'_____________________
'__ ou ________________

for each Opcaozinha in FrameOndeEstaoOsOptions
   Opcaozinha.value = False
next

Algo assim, hehehe, alguém sabe?

Valeu!

Link para o comentário
Compartilhar em outros sites

  • 0

Não funfou.

A idéia era pegar o todos os controles referentes ao pai do primeiro option (no caso, o frame) né?

O seu IF saquei, verificar se era um option e aí setá-lo.

Segundo meus testes com seu exemplo, percebi:

- Posso fazer diretamente:

For each x in frameNome.Controls
- O seu IF aqui não rolou. Esse typeof x is OptionButton não retorna true. E eu fiz como você fez. Coloquei ainda um:
MsgBox x.Name
Que me retornou direitinho o nome dos 3 objetos optionbuttons (radios) do frame. (opcao1, opcao2 e opcao3) - Tentei apenas isto:
If x = OptionButton Then x.Value = False
E deu certo! Porém, isto não me parece confiável... porque a variável x é do tipo Booleana (vartype) e o objeto x é um OBJETO, hehehe. Tentei também isto (que vi por aí):
For i = 0 To fmRadios.Controls.Count - 1
           If TypeOf fmRadios.Controls(i) Is OptionButton Then
                  fmRadios.Controls(i).Text = ""
           End If
    Next

Talvez funcionasse, embora faça a mesma coisa, mas deu na mesma.

Queria poder testar/debugar/saber qual é o typeof que está sendo atribuído à aquele suposto optionButton, hehe, mas não rolou um msgbox typeof x, pois dá erro, dizendo que o IS era esperado em seguida x(

Se tiver alguma sugestão, agradeço.

Valeu pela ajuda kuroi

Editado por [ GuTo ]
Link para o comentário
Compartilhar em outros sites

  • 0

você esta esta usando vba e não visual basic, certo??

porque testei no vb e funcionou certinho.

como não mexo com vba, num sei dizer ao certo, mas acho que talvez no vba o nome do controle não seja OptionButton e sim outro, por isso o if retorna false, de uma olhada, qualquer coisa poste aí

Link para o comentário
Compartilhar em outros sites

  • 0

Olha este print-screen que tirei

Realmente, é VBA no Excel.

Não sei porque não funciona.

Vi se tinha algo parecido, mas não.

E na caixa de ferramentas no userForm informa como um "OptionButton".

Estranho! Talvez se comporte de maneira diferente.

Uso o Excel 2007 (Office 2007). Talvez seja isso Não sei se em outras versões, mais recentes, vai na boa.

Link para o comentário
Compartilhar em outros sites

  • 0

estranho mesmo. usa-se o is pra comparar tipos. usando o igual ele sempre retornaria false.

talvez realmente seja por você estar usando a versao 2007, talvez eles tenham feito algumas mudancas.

você disse que assim funcionou, certo?

If x = OptionButton Then x.Value = False

então, so de teste, tente inserir algum outro controle dentro do frame que não seja um option. um textbox, por exemplo. ai rode o codigo. se não der erro é porque esta td certo.

Link para o comentário
Compartilhar em outros sites

  • 0

Isso mesmo!

Fiz este teste pouco depois e o textBox não passou na validação, embora os outros passaram :)

Então, tá certo.

Valeu!

___________________________________________

EDITADO!

------------------------------------------------------------

Brow, sabendo que muitos podem ter dúvidas parecidas, venho aqui deixar mais uma boa ajuda.

Tava bisoiando o fórum, e vi isso, que me é útil também.

Usando o TypeName() consigo saber a mesma coisa que o o suposto TypeOf() no VBA era para funcionar (e ainda já criei uma funçãozinha para facilitar e quem quiser pode sair debugando já ;))

'Radios é por causa do <input type="radio"> do HTML, que visualmente e funcionalmente, é a mesma coisa
Public Sub limpaRadios(oFrame)
    'Funciona no Excel 2007
    'Não é usado typeof x is OptionButton porque não funciona
    Dim X As Control
    For Each X In oFrame.Controls
        If TypeName(X) = "OptionButton" Then X.Value = False
        'MsgBox TypeName(x) & " :: " & (TypeName(x) = "OptionButton")
        'Esta condição não funciona quando o x.Value for igual a TRUE, por isso, use TypeName(), como acima
        'If x = OptionButton Then x.Value = False
    Next
End Sub

A mesma coisa vale para o controle: "CheckBox"

Editado por [ GuTo ]
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...