Problems with Error '9': subscript out of range

0

I am creating a customer registry, and every time I will debug when it arrives at:

totaldelinhas = Worksheets("bancodedados").UsedRange.Rows.Count + 1
caixa_Localizar.RowSourceType = "bancodedados!a2:a90" & totaldelinhas

It's a mistake, what do I do?

Complete code:

Private Sub botãoExcluir_Click()
'verificar se o usuário selecinou algum nome
If caixa_Localizar = -1 Then
MsgBox "Selecione primeiro o nome antes de tentar excluir"
Exit Sub
'variasvel que armazena a linha que o nome está
linha = caixa_Localizar.ListIndex + 2

End If


End Sub

Private Sub botãoFechar_Click()
Unload cadastro
login.Show

End Sub

Private Sub botãoSalvar_Click()
'Aqui criei a variável total registro onde irá amarzenar a quantidade de linhas que foram preenchidas

totalregistro = Worksheets("Banco de Dados").UsedRange.Rows.Count + 1

Worksheets("Banco de Dados").Select

'Aqui começa a gravação dos dados

Cells(totalregistro, 1) = caixaData
Cells(totalregistro, 2) = caixaPed
Cells(totalregistro, 3) = caixaNome
Cells(totalregistro, 4) = caixaEnd
Cells(totalregistro, 5) = caixaEstado
Cells(totalregistro, 6) = caixaBairro
Cells(totalregistro, 7) = caixaDatadenascimento
Cells(totalregistro, 8) = caixaRenda
Cells(totalregistro, 9) = caixaFunção
Cells(totalregistro, 10) = caixaTel
Cells(totalregistro, 11) = caixaNomedamãe
Cells(totalregistro, 12) = caixaCPF
Cells(totalregistro, 13) = caixaRG
Cells(totalregistro, 14) = caixaQuantidadedeparcelas
Cells(totalregistro, 15) = caixaParcelaspagas


'Mensagem de gravação concluída

MsgBox "Dados concluídos com sucesso"

'Limpar dados da caixa

caixaData = ""
caixaPed = ""
caixaNome = ""
caixaEnd = ""
caixaEstado = ""
caixaBairro = ""
caixaDatadenascimento = ""
caixaRenda = ""
caixaFunção = ""
caixaTel = ""
caixaNomedamãe = ""
caixaCPF = ""
caixaRG = ""
caixaQuantidadedeparcelas = ""
caixaParcelaspagas = ""


'Colocar o focu na caixa data

caixaData.SetFocus



End Sub
Private Sub caixa_Localizar_Click()
totalregistro = Worksheets("bancodedados").UsedRange.Rows.Count
For i = 0 To totalregistro

If caixa_Localizar.ListIndex = i Then

'Peencher as caixas

caixaData = Cells(i + 2, 1)
caixaPed = Cells(i + 2, 2)
caixaNome = Cells(i + 2, 3)
caixaEnd = Cells(i + 2, 4)
caixaEstado = Cells(i + 2, 5)
caixaBairro = Cells(i + 2, 6)
caixaDatadenascimento = Cells(i + 2, 7)
caixaRenda = Cells(i + 2, 8)
caixaFunção = Cells(i + 2, 9)
caixaTel = Cells(i + 2, 10)
caixaNomedamãe = Cells(i + 2, 11)
caixaCPF = Cells(i + 2, 12)
caixaRG = Cells(i + 2, 13)
caixaQuantidadedeparcelas = Cells(i + 2, 14)
caixaParcelaspagas = Cells(i + 2, 15)

Exit Sub


End If
Next


End Sub

Private Sub UserForm_Initialize()
'Caixa de estado

caixaEstado.AddItem "Acre/AC"
caixaEstado.AddItem "Alagoas/AL"
caixaEstado.AddItem "Amapá/AP"
caixaEstado.AddItem "Amazonas/AM"
caixaEstado.AddItem "Bahia/BA"
caixaEstado.AddItem "Ceará/CE"
caixaEstado.AddItem "Distrito Federal/DF"
caixaEstado.AddItem "Espírito Santo/ES"
caixaEstado.AddItem "Goiás/GO"
caixaEstado.AddItem "Maranhão/MA"
caixaEstado.AddItem "Mato Grosso/MT"
caixaEstado.AddItem "Mato Grosso do Sul/MS"
caixaEstado.AddItem "Minas Gerais/MG"
caixaEstado.AddItem "Pará/PA"
caixaEstado.AddItem "Paraíba/PB"
caixaEstado.AddItem "Paraná/PR"
caixaEstado.AddItem "Pernambuco/PE"
caixaEstado.AddItem "Piauí/PI"
caixaEstado.AddItem "Rio de Janeiro/RJ"
caixaEstado.AddItem "Rio Grande do Norte/RN"
caixaEstado.AddItem "Rio Grande do Sul/RS"
caixaEstado.AddItem "Rondônia/RO"
caixaEstado.AddItem "Roraima/RR"
caixaEstado.AddItem "Santa Catarina/SC"
caixaEstado.AddItem "São Paulo/SP"
caixaEstado.AddItem "Sergipe/SE"
caixaEstado.AddItem "Tocantins/TO"

'Dados celula localizar

 totaldelinhas = Worksheets("bancodedados").UsedRange.Rows.Count
 caixa_Localizar.RowSource = "a2:a90" & totaldelinhas
    
asked by anonymous 29.04.2015 / 15:39

1 answer

1

From what I understood the main problem is that you are not able to get the last line used from the sheet "Database";

You can use:

Dim totaldelinhas As Integer
totaldelinhas = Worksheets("Banco de Dados").Range("A" & Rows.Count).End(xlUp).Row

This will return an integer, representing the last row filled in column 'A'.

Then, to set the range of the_Localize:

caixa_Localizar.RowSourceType = "bancodedados!a2:a" & totaldelinhas

See if that's what you want.

    
29.04.2015 / 21:51