Notifications
Clear all

Arrays

3 Posts
3 Usuários
0 Reactions
957 Visualizações
(@brunanerys)
Posts: 1
New Member
Topic starter
 

Boa Tarde a todos :D Sou iniciante no mundo do vba, estou criando um formulario para registrar o movimento do contas a pagar aqui da empresa.
Ja consegui avançar bastante e meu formulario funciona, mas sei que para agilizar a velocidade e espaço é bom usar Arrays.
Mas não entra na minha cabeça, estou a dias pesquisando e lendo, lendo e nada de entender.
Entendi que por exemplo no cadastro de fornecedores devo passar os dados para Array pois assim agilizaria a pesquisa via Listview, combobox etc.
Nessa linha de raciocínio teria que ter Array para FornecedoresTelefone, FornecedoresEndereco,FornecedoresEmail e etc. É +/- isso?

Mas ai que entra o bug da minha cabeça: como eu faço isso?
De tanto pesquisar consegui um codigo meio estranho, que eu entendo, mas está apresentando erro de sintaxe, falta separador ou ), e não sei como resolver isso.

Option Base 1
Sub Fornecedor_Telefone() 
Dim fornecedortelefone() As Integer, ult_lin As Integer, contador As Integer 

->        ult_lin = WorksheetFunction.count(Range("C3:C30ReDim fornecedortelefone(ult_lin)   <- Aqui apresenta o erro.

contador = 1
Do Until contador = ult_lin + 1 
fornecedortelefone(contador) = Range("C3").Cells(contador, 1) 
contador = contador + 1 
Loop
End Sub

É assim que devo passar as informações que tenho nas planilhas para array?

Já quero agradecer a todos, por compartilharem seus conhecimentos e por apoiarem os iniciantes :D

 
Postado : 03/03/2018 3:34 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

Boa noite BrunaNerys, seja bem vinda ao forum !

Para passar os dados das células de uma planilha para uma array, pode-se fazer simplesmente desta forma:

suaArray = [intervalo de células]

Quando for tratar os dados, precisar pesquisar, filtrar, formatar alguma coluna especifica etc ai é preciso dimensionar a array e utilizar uma rotina similar a que você postou.

Veja um exemplo abaixo, abra o Excel e crie dados no intervalo "A2:G10", por exemplo.

Cole o codigo abaixo e faça o teste.

Sub Teste_Array()
    Dim msg         As String
    Dim i!
    Dim J!
    Dim suaArray    As Variant
    Dim UltimaLinha As Long
    
    With ActiveSheet
    
        'Def. a ultima linha com dados
        UltimaLinha = .Cells(.Rows.Count, 1).End(xlUp).Row
        
        ' Associa os dados na array
        suaArray = ActiveSheet.Range("A1:G" & UltimaLinha).Value
        
         ' Carrega e estrutura a msg:
        For i = LBound(suaArray, 1) To UBound(suaArray, 1)
            For J = LBound(suaArray, 2) To UBound(suaArray, 2)
                msg = msg & suaArray(i, J) & "  |  "
            Next J
            msg = msg & VBA.vbCr
        Next i
        
    End With
    
    MsgBox msg
    
End Sub



Click em se a resposta foi util!

 
Postado : 03/03/2018 4:37 pm
(@evpassos)
Posts: 1
New Member
 

Nao seria assim:

ult_lin = WorksheetFunction.count(Range("C3:C30))
ReDim fornecedortelefone(ult_lin)

O ReDim é para recriar a variavel com o novo count que foi gerado na linha de cima

 
Postado : 04/03/2018 8:35 pm