Ajuda VB (muito dificil)

zemar

Power Member
Boas! será que alguem pode dar uma ajuda no meu primeiro "programa" em VB ?:009:

Tenho uma frame com uma textbox (textbox1). Nesta textbox eu pretendo que o utilizador introduza numeros entre 5 e 20 (>5 e <20) inteiros!

Código:
Private Sub TextBox1_Change()
 
numero1 = Val(TextBox11.Text)
 
If numero1 < 5 Or numero11 > 20 Then
Beep
TextBox1.Text = ""
End If
 
End Sub

o meu problema é que quando tento introduzir valores na textbox1 esta só aceita os numeros 5, 6, 7, 8 e 9 :005:

alem disto pretendo que o cursor passe para a textbox2 apenas quando o numero da textbox1 esta entre 5 e 20!!

bom eu sei que isto é programação ao mais alto nivel, :lol:mas espero que alguem me possa dar uma ajudinha :003:

thxxx
 
Última edição pelo moderador:
eu criei 2 caixas txt1 e txt2

muito simples tens um evernto key press para a tua caixa para so aceitar numeros
Código:
 Private Sub txt1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt1.KeyPress

        If (e.KeyChar >= "!" And e.KeyChar <= "/") Or _
                (e.KeyChar >= ":" And e.KeyChar <= "~") Then
            e.Handled = True
        End If

    End Sub

e outra para ao escolheres entre o numero que queres parassar logo para a outra caixa

Código:
    Private Sub txt1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt1.TextChanged

        If (Val(txt1.Text) >= 5 And Val(txt1.Text) <= 20) Then
            Me.txt2.Focus()
        End If


    End Sub

espero que ajude
 
alfinete!

este codigo funciona tambem no Visual Basic do Excel

é que esta frame é para um programa de excel

ja tentei colocar o código mas n funciona!

mais uma ajudinha ....pls
 
existe o txt_keypress e o txt_change

mas o codigo que está dentro dos procedimentos n funciona!


:sad:



fico à espera de mais umas dicas de algum expert em visualbasic do excel

thxx
 
vai ao google e poe vb text_keypress, e text change

basicamente o que faz o key press, é so para aceitar o que queres, numeros , letras, numeros e letras, ou apenas algunas caracteres.

o change é quando o que esta escrito esta certo em relação ao que queres ele fas o que tu dizes

espero que tenha ajudado
 
para o change é so isto

Código:
Private Sub Txt1_Change()
  If (Val(Txt1.Text) >= 5 And Val(Txt1.Text) <= 20) Then
            txt2.SetFocus
        End If

End Sub

nada mais simples
 
tens aqui um keypress que funciona quase bem

Código:
Private Sub Txt1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)


 
   If ((KeyAscii >= 0 And KeyAscii < 48) Or (KeyAscii > 57)) Then

           Txt1.Text = ""
        
   End If

End Sub


tens aqui a tabela de code ascii

http://pt.wikipedia.org/wiki/ASCII

o que tens em "Glifo" , é o caracter que queres

em "decimal"é o que pões em frente ao KeyAscii

espero que ajude
 
se n conseguiste eu consegui

criei duas caixas num form excel (txt1 e txt2)


Código:
 ' na 1ª posicao da string digitada cancelar o 3 e 4 pois si são aceites apertir do 5
 If ((Txt1.TextLength = 1 And (Val(Txt1.Text) = 3 or Val(Txt1.Text) = 3 Or Val(Txt1.Text) = 4))) Then
 
 Txt1.Text = ""
 
 
 End If
 
 ' caso o texto tenha 2 digitos testa se o digito é maior que 20
 If ((Txt1.TextLength = 2 And Val(Txt1.Text) > 20)) Then
 
 Txt1.Text = ""
 
 
 End If
 
  ' poe a 2 caixa activa quando num digitado entre 5 e 20
  If (Val(Txt1.Text) >= 5 And Val(Txt1.Text) <= 20) Then
            txt2.SetFocus
           
  End If
      

End Sub

Private Sub Txt1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'so aceita digitos
  
   Select Case KeyAscii
        Case Asc("0") To Asc("99")
        Case Asc(".")
        If InStr(1, TextBox1.Text, ".") > 0 Then
        KeyAscii = 0
        End If
   Case Else
   KeyAscii = 0
End Select

esta anti bala... lol
so aceite na primeira caixa de texto digitos

e numeros entre 5 e 20 apenas

na 1 posicao da strimg desta text so aceita 1,2,5,6,7,8,9(som com 1 e 2 pode digitar mais digitos em frente , caso contratio apaga a string); no caso do 2 so aceita 0 a frente, caso ocntrario apaga string.

espero que sirva

lol
 
obrigado alfinete!


com a tua ajuda ja resolvi esse problema! :x2:

mas agora ja estou com outro....

quais são as funções que fazem arredondamentos de numeros no VB do excell ?

eu utilizei o ROUND... mas se fizer ROUND (10,5) o arredondamento dá 10 e deveria dar 11 !!!!!!!!!! >(>(>(

vida de "programador" é duro! :rolleyes:

alguem me pode dar uma ajudinha?

obrigado a todos
 
Se bem me lembro do VB6, o método Round aceita dois argumentos com 1 "overload":

Round(Valor,Casas Decimais)
Round(Valor)

Ao alimentares a função com 10,5 estás na realidade a pedir:
"Arredonda-me o número 10 com até 5 casas decimais possíveis"

O que deves chamar é algo deste género (e atenção, não tenho o VB6 para te confirmar isto lá):

Round(10.5) = 11

ou

Round(10.5,0) = 11

Ainda que julgue que isso não te arredonde para 11. Acho que o VB6 tinha uns graneis com alguns datatypes. Mas enfim, se usares 10.51 já te arredonda de certeza para 11 :rolleyes:

O importante é que percebas a diferença da vírgula e do ponto nos argumentos de um método.
 
Última edição:
Back
Topo