2
respostas

Duvida

O código ficou assim, gostaria de saber se está certo:

Private Sub cmdSalvar_Click()

    If Not IsDate(txtData) Then
        MsgBox "Digite uma data válida"
        Exit Sub
    End If
     
    If lblTipoform = "Inclusão" Then
        Range("A1").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(1, 0).Select
    End If
    
    Range("A" & Selection.Row) = txtAtivo
    Range("B" & Selection.Row) = CDbl(txtQtd)
    Range("C" & Selection.Row) = cmbTipo
    Range("D" & Selection.Row) = CCur(txtPreco)
    Range("E" & Selection.Row) = txtCliente
    Range("F" & Selection.Row) = txtContato
    Range("G" & Selection.Row) = txtData
    Range("H" & Selection.Row) = txtHora
    

    Dim ws As Worksheet
    Dim nome As String
    Dim sobrenome As String
    
    ' Defina a planilha onde os dados serão inseridos
    Set ws = ThisWorkbook.Sheets("Planilha1") ' Substitua "Planilha1" pelo nome da sua planilha
    
    ' Verifique se todos os campos estão preenchidos
    If Trim(Me.TextBox1.Value) = "" Or Trim(Me.TextBox2.Value) = "" Then
        MsgBox "Por favor, preencha todos os campos!", vbExclamation
        Exit Sub
    End If
    
    ' Preencha as variáveis com os valores dos campos do formulário
    nome = Me.TextBox1.Value
    sobrenome = Me.TextBox2.Value
    
    ' Inserir os dados na planilha
    With ws
        .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Value = nome
        .Cells(.Rows.Count, "B").End(xlUp).Offset(1, 0).Value = sobrenome
    End With
    
    ' Limpar os campos do formulário após a inserção
    Me.TextBox1.Value = ""
    Me.TextBox2.Value = ""
    
    MsgBox "Dados inseridos com sucesso!", vbInformation
   

    cmdSair_Click
End Sub

Private Sub ComboBox1_Change()

End Sub



Private Sub txtPreco_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    
    'Verifica as teclas de 1 a 9 no teclado alfanumérico
    If KeyCode >= vbKey0 And KeyCode <= vbKey9 Then
        
    'Verifica as teclas de 1 a 9 no teclado numérico
    ElseIf KeyCode >= vbKeyNumpad0 And KeyCode <= vbKeyNumpad9 Then
            
    'Deixa pronto o tratamento para a vírgula "," e libera seu uso
    ElseIf KeyCode = 188 Then
                
    'Deixa pronto o tratamento para a tecla "delete" e libera seu uso
    ElseIf KeyCode = vbKeyDelete Then

    'Deixa pronto o tratamento para a tecla "backspace" e libera seu uso
    ElseIf KeyCode = vbKeyBack Then
    
    'Se nenhuma das alternartivas forem verdadeiras
    Else
    KeyCode = vbKeyCancel
End If


End Sub

Private Sub txtQtd_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    
    'Verifica as teclas de 1 a 9 no teclado alfanumérico
    If KeyCode >= vbKey0 And KeyCode <= vbKey9 Then
    
    'Verifica as teclas de 1 a 9 no teclado numérico
    ElseIf KeyCode >= vbKeyNumpad0 And KeyCode <= vbKeyNumpad9 Then
        
    'Deixa pronto o tratamento para a tecla "delete" e libera seu uso
    ElseIf KeyCode = vbKeyDelete Then
        
    'Deixa pronto o tratamento para a tecla "backspace" e libera seu uso
    ElseIf KeyCode = vbKeyBack Then
        
    'Caso não seja nenhum dos casos acima, cancela a digitação
    Else
        KeyCode = vbKeyCancel
    
    End If
End Sub
2 respostas

Continuação:

Private Sub txtData_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    MsgBox "Key Down"
End Sub

Private Sub txtData_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    MsgBox "Key Press"
End Sub

Private Sub txtData_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    MsgBox "Key Up"
End Sub

Private Sub UserForm_Activate()
  
    'Carrega o combo de compra e venda
    cmbTipo.AddItem "Compra"
    cmbTipo.AddItem "Venda"
    
    'Carrega o combo de contatos da mesa
    For Contador = 2 To 6
        cmbContato.AddItem panilha2.Cells(Contador, 1)
    Next
    
If lblTipoform.Caption = "Alteração" Then
  
    txtAtivo.Text = Range("A" & Selection.Row)
    txtQtd.Text = Range("B" & Selection.Row)
    cmbTipo.Text = Range("C" & Selection.Row)
    txtPreco.Text = Range("D" & Selection.Row)
    txtCliente.Text = Range("E" & Selection.Row)
    cmbContato.Text = Range("F" & Selection.Row)
    txtData.Text = Range("G" & Selection.Row)
    txtHora.Text = Format(Range("H" & Selection.Row), "HH:mm")
  Else
    txtData = Format(Now(), "dd/mm/yyyy")
    txtHora = Format(Now(), "HH:mm")
  End If

End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngContacts As Range
    Dim cell As Range
    Dim contactList As String
    Dim i As Integer
    
    ' Defina o intervalo onde estão os contatos
    Set rngContacts = Me.Range("A2:A" & Me.Cells(Me.Rows.Count, "A").End(xlUp).Row)
    
    ' Limpe o conteúdo do controle ListBox
    Me.ListBox1.Clear
    
    ' Construa a lista de contatos
    For Each cell In rngContacts
        Me.ListBox1.AddItem cell.Value
    Next cell
End Sub

Olá Maria, tudo bem com você?

Obrigado por compartilhar o código VBA do seu projeto com a comunidade. Você está no caminho certo, seu código é funcional.

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!