Problems with Error '9': subscribed out of range

Asked

Viewed 1,193 times

0

I’m creating a customer register, and every time I debug when it comes to:

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

Make a mistake, what 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
  • 2

    Good morning, Paloma! Welcome to Stackoverflow! If possible add more information to your question (for example the rest of code) so that users can help you.

  • 1

    What exactly are you trying to do? "bancodedados!a2:a90" & totaldelinhas is that right? This should return something like a2:a90160 if the worksheet has 160 lines....

1 answer

1

From what I understand the main problem is that you are not able to get the last line used of 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 number, representing the last row filled in column 'A'.

Then, to set the box range:

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

See if that’s what you want.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.