Bem, eu comecei os meus estudos sobre VBA a pouquíssimo(ontem, para ser mais exato 12/07) tempo e a minha vontade de aprender é muito grande!
Pesquisando sobre os comandos de loop, cheguei ao DO WHILE, a minha idéia é varrer toda uma coluna para que, na hora de cadastrar uma pessoa, não cadastre em cima de uma já existente. Aparentemente o comando DO WHILE está todo correto mas o mesmo não é executado! Alguém pode me ajudar?
Grato desde já. :)
Option Explicit Public Linha As Integer
Private Sub cmdCadComi_Click() If lblNome.Value = "" Then MsgBox "Por favor,preencha todos os campos" End ElseIf (Val(masc1) Or Val(masc2) Or Val(masc3) Or Val(fem1) Or Val(fem2) Or Val(fem3)) > 300 Then MsgBox "Não é possível registrar esta quantidade de Ingressos.", vbOKOnly End Else Do While Range("A" & Linha).Value <> Empty Linha = Linha + 1 Loop Worksheets("Comissários").Activate Linha = Linha + 1 Range("A" & Linha).Value = lblNome Range("B" & Linha).Value = Val(masc1) Range("C" & Linha).Value = Val(fem1) Range("D" & Linha).Value = Val(fem1) + Val(masc1) Range("I" & Linha).Value = Val(masc2) Range("J" & Linha).Value = Val(fem2) Range("K" & Linha).Value = Val(fem2) + Val(masc2) Range("P" & Linha).Value = Val(masc3) Range("Q" & Linha).Value = Val(fem3) Range("R" & Linha).Value = Val(fem3) + Val(masc3) If CheckBox1 = True Then Range("W" & Linha).Value = Fix(((Val(fem1) + Val(masc1) + Val(fem2) + Val(masc2) + Val(fem3) + Val(masc3)) / 10)) End If End If 'Limpar os campos lblNome.Value = "" masc1.Value = "" masc2.Value = "" masc3.Value = "" fem1.Value = "" fem2.Value = "" fem3.Value = ""
MsgBox "Cadastro de " & Range("A" & Linha).Value & " realizado com sucesso!", vbOKOnly Worksheets("Menu").Activate
End Sub Public Sub Form_KeyPress(KeyAscii As Integer) 'Esse código permite a mudança de quadro de 'texto através do Enter If KeyAscii = 13 Then 'Se o tipo do controle ativo for TextBox If TypeOf Screen.ActiveControl Is TextBox Then 'Simula o pressionamento da tecla TAB SendKeys "{tab}" 'A linha a seguir evita ouvir um bip KeyAscii = 0 End If End If End Sub
Private Sub cmdSair_Click() Unload Me End Sub
Private Sub fem1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim strValid As String strValid = "0123456789"
If InStr(strValid, Chr(KeyAscii)) = 0 Then KeyAscii = 0 End If End Sub
Private Sub fem2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim strValid As String strValid = "0123456789"
If InStr(strValid, Chr(KeyAscii)) = 0 Then KeyAscii = 0 End If End Sub
Private Sub fem3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim strValid As String strValid = "0123456789"
If InStr(strValid, Chr(KeyAscii)) = 0 Then KeyAscii = 0 End If End Sub
Private Sub masc1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim strValid As String strValid = "0123456789"
If InStr(strValid, Chr(KeyAscii)) = 0 Then KeyAscii = 0 End If
End Sub
Private Sub masc2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim strValid As String strValid = "0123456789"
If InStr(strValid, Chr(KeyAscii)) = 0 Then KeyAscii = 0 End If End Sub
Private Sub masc3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim strValid As String strValid = "0123456789"
If InStr(strValid, Chr(KeyAscii)) = 0 Then KeyAscii = 0 End If End Sub
Private Sub UserForm_Initialize() If Linha = 0 Then Linha = 1 Else End If End Sub [/codebox]
Pergunta
Avilez
Olá galera,
Bem, eu comecei os meus estudos sobre VBA a pouquíssimo(ontem, para ser mais exato 12/07) tempo e a minha vontade de aprender é muito grande!
Pesquisando sobre os comandos de loop, cheguei ao DO WHILE, a minha idéia é varrer toda uma coluna para que, na hora de cadastrar uma pessoa, não cadastre em cima de uma já existente. Aparentemente o comando DO WHILE está todo correto mas o mesmo não é executado! Alguém pode me ajudar?
Grato desde já. :)
Editado por AvilezLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.