VBA EXCEL - LIMPAR FORM
Oi pessoa, tenho esse código que carrega SETORES, LOCAIS, ESTADOS e suas respectivas CIDADES.Só que ao LIMPAR o formulário da um erro e para tudo. Segue o código e comentário na linha que ocorre o seguinte erro:[Ô]Erro em tempo de execução [ô]381[ô]. Não foi posivel obter a propriedade List.Indice de matriz de propriedade inválido[Ô]. Parei aqui,....Como contornar esse erro????
Private Sub cmdLimpar_Click()
LimpaForm
End Sub
---------------------
Sub LimpaForm()
LinhaPlanilha = 0
TxtCod.Value = [Ô][Ô]
Me.txtCel.Text = [Ô][Ô]
Me.txtTel.Text = [Ô][Ô]
lblNome.Caption = [Ô][Ô]
Me.ComboBox_Cidade.Clear
Me.ComboBox_Local.ListIndex = -1
Me.ComboBox_Nomes.ListIndex = -1
Me.ComboBox_Setor.ListIndex = -1
Me.ComboBox_UF.Clear
End Sub
----------------------------------------------
Private Sub UserForm_Initialize()
TotalRegistros = Setor.UsedRange.Rows.Count
TotalRegistros = Centro.UsedRange.Rows.Count
TotalRegistros = Nomes.UsedRange.Rows.Count
TotalRegistros = Cidade.UsedRange.Rows.Count
TotalRegistros = Estado.UsedRange.Rows.Count
AtualizaCombobox_nomes
AtualizaCombobox_Local
AtualizaCombobox_Setor
Call CarregaUF
End Sub
--------------------------------------------------
Private Sub CarregaUF()
Dim linha As Integer, coluna As Integer
linha = 2
coluna = 2
Me.ComboBox_UF.Clear
With Sheets([Ô]Estado[Ô])
Do While Not IsEmpty(.Cells(linha, coluna))
Me.ComboBox_UF.AddItem .Cells(linha, coluna).Value
linha = linha + 1
Loop
End With
Exit Sub
End Sub
------------------------------------------------------
Private Sub ComboBox_UF_Change()
Call CarregaCidades(Me.ComboBox_UF.List(Me.ComboBox_UF.ListIndex)) [ô] O ERRO APONTA NESSA LINHA
End Sub
--------------------------------------------------------------------
Private Sub CarregaCidades(ByVal Categoria As String)
Dim linha As Integer, colunaCidade As Integer, colunaUF As Integer
linha = 2
colunaCidade = 3
colunaUF = 2
Me.ComboBox_Cidade.Clear
With Sheets([Ô]Cidade[Ô])
Do While Not IsEmpty(.Cells(linha, colunaCidade))
If .Cells(linha, colunaUF).Value = Categoria Then
Me.ComboBox_Cidade.AddItem .Cells(linha, colunaCidade).Value
End If
linha = linha + 1
Loop
End With
End Sub
Private Sub cmdLimpar_Click()
LimpaForm
End Sub
---------------------
Sub LimpaForm()
LinhaPlanilha = 0
TxtCod.Value = [Ô][Ô]
Me.txtCel.Text = [Ô][Ô]
Me.txtTel.Text = [Ô][Ô]
lblNome.Caption = [Ô][Ô]
Me.ComboBox_Cidade.Clear
Me.ComboBox_Local.ListIndex = -1
Me.ComboBox_Nomes.ListIndex = -1
Me.ComboBox_Setor.ListIndex = -1
Me.ComboBox_UF.Clear
End Sub
----------------------------------------------
Private Sub UserForm_Initialize()
TotalRegistros = Setor.UsedRange.Rows.Count
TotalRegistros = Centro.UsedRange.Rows.Count
TotalRegistros = Nomes.UsedRange.Rows.Count
TotalRegistros = Cidade.UsedRange.Rows.Count
TotalRegistros = Estado.UsedRange.Rows.Count
AtualizaCombobox_nomes
AtualizaCombobox_Local
AtualizaCombobox_Setor
Call CarregaUF
End Sub
--------------------------------------------------
Private Sub CarregaUF()
Dim linha As Integer, coluna As Integer
linha = 2
coluna = 2
Me.ComboBox_UF.Clear
With Sheets([Ô]Estado[Ô])
Do While Not IsEmpty(.Cells(linha, coluna))
Me.ComboBox_UF.AddItem .Cells(linha, coluna).Value
linha = linha + 1
Loop
End With
Exit Sub
End Sub
------------------------------------------------------
Private Sub ComboBox_UF_Change()
Call CarregaCidades(Me.ComboBox_UF.List(Me.ComboBox_UF.ListIndex)) [ô] O ERRO APONTA NESSA LINHA
End Sub
--------------------------------------------------------------------
Private Sub CarregaCidades(ByVal Categoria As String)
Dim linha As Integer, colunaCidade As Integer, colunaUF As Integer
linha = 2
colunaCidade = 3
colunaUF = 2
Me.ComboBox_Cidade.Clear
With Sheets([Ô]Cidade[Ô])
Do While Not IsEmpty(.Cells(linha, colunaCidade))
If .Cells(linha, colunaUF).Value = Categoria Then
Me.ComboBox_Cidade.AddItem .Cells(linha, colunaCidade).Value
End If
linha = linha + 1
Loop
End With
End Sub
Acho que apos executar o comando LIMPAR, o combo UF perde a propriedade LIST e provavelmente não carrega os ESTADOS. Como LIMPAR formulário e restaurar ao ponto inicial???
Gente, tô desde ontem nesse LIMPAR e não sai do lugar ainda.Já fiz milhares de alterações e nada, portanto segue o arquivo para os colegas espiarem...Segue...
Bom acrescente essa linha na função LIMPAFORM
Mude o evento change do COMBO_UF para esse abaixo
E Mude a propriedade do COMBO_CIDADE para
If Me.ComboBox_Cidade.Enabled Then Me.ComboBox_Cidade.Enabled = False
Mude o evento change do COMBO_UF para esse abaixo
If Me.ComboBox_UF.ListIndex > -1 Then
Call CarregaCidades(Me.ComboBox_UF.List(Me.ComboBox_UF.ListIndex))
Me.ComboBox_Cidade.Enabled = True
End If
E Mude a propriedade do COMBO_CIDADE para
ENABLED=FALSE
FILMAN, fechou todas.Inclusive com o código acima me surgiu novas idéias para seguir adiante, valeu. Vou encerrar....
Tópico encerrado , respostas não são mais permitidas