Escola Saberexcel VBA Estudos® - Treinamentos com Macros, Fórmulas e Funções
Prezada Amiga Luciana,
Observe o que voce deverá fazer em seu projeto, aqui fiz alguns códigos para seus procedimentos
fiz apenas para 25 objetos textboxes, que retornaram dados para sua folha de planilha, carrega listboxes ao abrir o userform, limpa todas as textboxes para uma nova ação baseados nos objetos existentes usando a instrução For Next e Controls para todos os objetos Textboxes.
você deverá completar o restante ok...
Depois, terminado o seu projeto, envie-me para verificar Ok.....
Fique com Deus, bons estudos.
'//- - - - - - - - - - - - - - - - - - - - '
Expedito Marcondes - Escola Saberexcel VBA Estudos. - [email protected]
Curso completo MS Excel VBA >>> Curso Completo Microsoft Excel VBA
'//- - - - - - - - - - - - - - - - - - - - '
'//=========='Erro: Me.Controls("TextBox" & x).Value = Sheets("Banco_dados").Range("C" & i + 2).Offset(1,0)
Private Sub CommandButton2_Click()
Dim i As Long
'// ==========' verfica inconsistencia na textbox1 e textbox2
If txtNOME = "" Then
If txtSOBRENOME = "" Then
MsgBox "por favor digite seu nome e sobrenome txtNOME e txtSOBRENOME!!", vbCritical, "Escola Saberexcel VBA Estudos®"
Exit Sub
End If
End If
'//==========' aumente a performance da execução usando os alertas
With Application
.Calculation = xlCalculationManual
.DisplayAlerts = False
.ScreenUpdating = False
End With
'//========' se entrar e selecionar, salvar o nome selecionado
For i = 1 To ListBox1.ListCount
If ListBox1.Selected(i) = True Then
With Worksheets("Banco_dados").Range("C" & i + 1)
If TextBox1.Value = "" Then .Offset(1, 0).Value = TextBox2.Value Else .Offset(1, 0).Value = TextBox1.Value
.Offset(1, 1).Value = TextBox2.Value
.Offset(1, 1).Value = TextBox2.Value
.Offset(1, 2).Value = TextBox3.Value
.Offset(1, 3).Value = TextBox4.Value
.Offset(1, 5).Value = TextBox5.Value
.Offset(1, 6).Value = TextBox6.Value
.Offset(1, 13).Value = TextBox7.Value
.Offset(1, 14).Value = TextBox8.Value
.Offset(1, 21).Value = TextBox9.Value
.Offset(1, 22).Value = TextBox10.Value
.Offset(1, 29).Value = TextBox11.Value
.Offset(1, 30).Value = TextBox12.Value
.Offset(1, 37).Value = TextBox13.Value
.Offset(1, 38).Value = TextBox14.Value
.Offset(1, 45).Value = TextBox15.Value
.Offset(1, 46).Value = TextBox16.Value
.Offset(1, 53).Value = TextBox17.Value
.Offset(1, 54).Value = TextBox18.Value
.Offset(1, 61).Value = TextBox19.Value
.Offset(1, 62).Value = TextBox20.Value
.Offset(1, 69).Value = TextBox21.Value
.Offset(1, 70).Value = TextBox22.Value
.Offset(1, 77).Value = TextBox23.Value
.Offset(1, 78).Value = TextBox24.Value
.Offset(1, 7).Value = TextBox25.Value
End With
Textboxes_Branco
End If
Next i
With Worksheets("Banco_dados").Range("C3").End(xlDown)
If TextBox1.Value = "" Then .Offset(1, 0).Value = TextBox2.Value Else .Offset(1, 0).Value = TextBox1.Value
.Offset(1, 1).Value = TextBox2.Value
.Offset(1, 2).Value = TextBox3.Value
.Offset(1, 3).Value = TextBox4.Value
.Offset(1, 5).Value = TextBox5.Value
.Offset(1, 6).Value = TextBox6.Value
.Offset(1, 13).Value = TextBox7.Value
.Offset(1, 14).Value = TextBox8.Value
.Offset(1, 21).Value = TextBox9.Value
.Offset(1, 22).Value = TextBox10.Value
.Offset(1, 29).Value = TextBox11.Value
.Offset(1, 30).Value = TextBox12.Value
.Offset(1, 37).Value = TextBox13.Value
.Offset(1, 38).Value = TextBox14.Value
.Offset(1, 45).Value = TextBox15.Value
.Offset(1, 46).Value = TextBox16.Value
.Offset(1, 53).Value = TextBox17.Value
.Offset(1, 54).Value = TextBox18.Value
.Offset(1, 61).Value = TextBox19.Value
.Offset(1, 62).Value = TextBox20.Value
.Offset(1, 69).Value = TextBox21.Value
.Offset(1, 70).Value = TextBox22.Value
.Offset(1, 77).Value = TextBox23.Value
.Offset(1, 78).Value = TextBox24.Value
.Offset(1, 7).Value = TextBox25.Value
End With
ActiveWorkbook.Worksheets("Banco_Dados").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Banco_Dados").Sort.SortFields.Add Key:=Range("C3:C2072"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Banco_Dados").Sort
.SetRange Range("A3:W2072")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Save
With Application
.Calculation = xlCalculationAutomatic
.DisplayAlerts = True
.ScreenUpdating = True
End With
Inicialize_ListBox
Textboxes_Branco
End Sub
Private Sub CommandButton25_Click()
ActiveWorkbook.Save
End Sub
Private Sub CommandButton3_Click()
Unload UserForm1
End Sub
Private Sub CommandButton4_Click()
Worksheets("Banco_dados").Select
UserForm1.Hide
End Sub
'//====== Luciana veja onde voce errou ((<<< temos que chamar os macros neste Botão >>> )) Ok. fique com Deus.
Private Sub CommandButton5_Click()
Inicialize_ListBox
Textboxes_Branco
End Sub
Private Sub ListBox1_Change()
Dim i As Long
Dim x As Byte
With ListBox1
If .ListIndex = -1 Then Exit Sub
For i = 1 To ListBox1.ListCount
If .ListCount <= 2 Then Exit Sub
If .Selected(i) = True Then
TextBox1.Value = Sheets("Banco_Dados").Range("C" & i + 2).Offset(0, 0).Value
TextBox2.Value = Sheets("Banco_Dados").Range("C" & i + 2).Offset(0, 1).Value
TextBox3.Value = Sheets("Banco_Dados").Range("C" & i + 2).Offset(0, 2).Value
TextBox4.Value = Sheets("Banco_Dados").Range("C" & i + 2).Offset(0, 3).Value
'//======' veja que aqui fiz uma Instrução Loop usando (For Next) para referenciar a todos os seus Objetos TextBoxes
For x = 5 To 85
Me.Controls("TextBox" & x).Value = Sheets("Banco_Dados").Range("C" & i + 2).Offset(0, x).Value
Next x
.Selected(i) = True
End If
Next i
End With
End Sub
Private Sub Deletar_Click()
Dim i As Long
Application.ScreenUpdating = False
With ListBox1
If .ListIndex = -1 Then Exit Sub
For i = 1 To ListBox1.ListCount
If .ListCount <= 2 Then Exit Sub
If .Selected(i) = True Then
Sheets("Banco_dados").Cells(i + 2, 1).EntireRow.Delete
.Selected(i) = False
End If
Next i
End With
Application.ScreenUpdating = True
'//==========' chamando os macros novamente
Inicialize_ListBox
TextBoxes_Banco
End Sub
'//==========' uma espécie de Verifica Inconsistencia se for digitado números:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then Exit Sub
If IsNumeric(TextBox1.Text) Then
MsgBox "Não digite Números somente Textos, porque serão apagados!!", vbCritical, "Escola Saberexcel VBA Estudos®!"
TextBox1.Value = ""
Exit Sub
End If
meuTexto = TextBox2.Text
Me.TextBox1 = Format(TextBox1, "")
End Sub
'//==========' uma espécie de Verifica Inconsistencia se for digitado data
Private Sub TextBox22_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox22 = "" Then Exit Sub
Me.TextBox22 = Format(TextBox42, "##"".""##"".""####")
If Not IsDate(TextBox22.Text) Then
MsgBox "Digite Data válida, outras itens serão apagados!!!", vbCritical, "Escola Saberexcel VBA Estudos®!"
TextBox22.Value = ""
Exit Sub
End If
End Sub
'//==========' Também um '[Verifica Inconsistencia]' caso deixe em branco força usuario a preencher
Private Sub TextBox23_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox23 = "" Then Exit Sub
meuTexto = TextBox23.Text
Me.TextBox23 = Format(TextBox23, "")
End Sub
'//==========' ao inicializar o userform, carrega o objeto ListBox(Caixa de Listagem) e Limpa todos as TextBoxes(Caixa de Texto)
Private Sub UserForm_Initialize()
Inicialize_ListBox
Textboxes_Branco
End Sub
'//==========' aqui usei esse procedimento para localizar a ultima linha e carregar o objeto ListBox(Caixa de Listagem) ao abrir Userform
Private Sub Inicialize_ListBox()
Dim c As Range
Dim x As Byte
Dim Ultima_Linha As Long
Me.ListBox1.Clear
Ultima_Linha = Sheets("Banco_dados").Range("C3").End(xlDown).Row
x = 0
For Each c In Sheets("Banco_dados").Range("C2:C" & Ultima_Linha)
With ListBox1
.AddItem c
.List(x, 0) = c
.List(x, 1) = c.Offset(0, 1)
x = x + 1
End With
Next c
End Sub
'//==========' aqui esse macro referncia a todos os objetos TextBox(caixa de Texto) -- para limpá-los, deletá-los etc...
Private Sub Textboxes_Branco()
Dim objControl As Control
For Each objControl In UserForm1.Controls
If TypeOf objControl Is MSForms.TextBox Then
objControl.Text = ""
End If
Next
End Sub
'//==========' <<< SUA ATENÇÃO PARA DETALHES SIMPLES, MAS SÃO FUNDAMENTAIS >>>>>
'//==========' um verfifica inconsistencia usando a operador logico "AND" = "E"
'digite
' If TextBox1 = "" And TextBox2 = "" Then
' MsgBox "digite algo nas textbox1 e textbox2 - SBX !!", vbCritical,"Escola Saberexcel VBA Estudos®"
' Exit Sub
' End If
'
' For i = 1 To ListBox1.ListCount
' (substitua por essa linha Ok )
' For i = 0 To ListBox1.ListCount - 1
'------------'
Aprenda tudo sobre planilhas do Aplicativo Microsoft Excel VBA(Visual Basic Application), sozinho, com baixo custo, praticando com os produtos didáticos
Escola Saberexcel VBA Estudos® - Treinamentos com Macros, Fórmulas e Funções.