Página 1 de 1

Erro 1004

Enviado: 12 Jun 2016 às 01:08
por rodolfonobrega
Galera, boa noite, tudo bem com vocês?

Se alguém puder me dar uma força eu agradeceria muito!

Estou desenvolvendo uma macro bem simples em que filtrará o conteúdo de algumas colunas, obterá o endereço das células desejadas, selecionará tais células e depois plotará isso em um gráfico!

Na verdade, a macro final será um pouco mais complexa, mas estou desenvolvendo esta inicialmente para depois aperfeiçoar o processo, pois bem:

Inicialmente tenho alguns dados de que vão de B4 até alguma coisa, Tenho que verificar quais células nesse intervalo tem um valor (no exemplo estou usando 0,5), quando tiver esse endereço, armazeno os pares ordenadas Bi, Ci, sendo i o número da linha em que estou! Tudo funciona beleza na obtenção dos endereços, o problema é pra selecionar o Range!

Vou postar a parte do código aqui para ficar mais fácil o entendimento:
Código: Selecionar todos
Sub Teste()
'Declaração de variáveis
    Dim celula As Range
    Dim minvalue As Double
    Dim enderecos As String
    Dim enderecosunion As String    
    
'Determinação do valor das variáveis
    minvalue = 0.5
     
'Verificacao dos Filtros e obtenção dos endereços
    For Each celula In Range("B4:" & ActiveSheet.Range("B65536").End(xlUp).Address).Cells
        If celula.Value = minvalue Then
            enderecos = enderecos & "," & celula.Offset(0,1).Address(False, False) & _
            "," & celula.Offset(0, 4).Address(False, False)
        End If
    Next
    enderecos = Right(enderecos, Len(enderecos) - 1)
    Range(enderecos).Select
End Sub
Tudo funciona okay, porém, na hora de selecionar as células obtidas, eu recebo o seguinte erro:
Erro em tempo de execução '1004':
O método 'Range' do objeto '_Global' falhou
Pensei:
Deve ser porque tem muitos endereços no Range e ele deve estar 'estourando', então vou fazer por Union, assim os endereços ficam 'formatados e menores' e não terei esse problema, criei o seguinte código:
Código: Selecionar todos
Define as variaveis auxiliares de contagem
    first = True
    count = 1
    
    For Each celula In Range("B4:" & ActiveSheet.Range("B65536").End(xlUp).Address).Cells
        If celula.Value = minvalue Then
            enderecos = enderecos & "," & celula.Offset(0,1).Address(False, False) & _
            "," & celula.Offset(0, 4).Address(False, False)
            count = count + 1
            'Divide o Range em intervalos de 9 pares ordenadas por limitação do VBA
            If count = 9 Then
                If first Then
                    enderecosunion = Right(enderecos, Len(enderecos) - 1)
                    first = False
                Else
                    enderecosunion = Union(Range(enderecosunion), Range(Right(enderecos, Len(enderecos) - 1))).Address
                End If
                enderecos = ""
                count = 1
            End If
        End If
    Next
    enderecosunion = Union(Range(enderecosunion), Range(Right(enderecos, Len(enderecos) - 1))).Address
   
    Range(enderecosunion).Select
Os endereços ficam bonitinhos, 'formatados', porém, na parte do Select apenas uma das colunas é selecionada e o principal problema: eu perco os pares ordenadas x, y, então dá erro no gráfico! :?

Portanto, tenho que fazer a seleção do primeiro jeito mesmo, mas pra isso, preciso dar um jeito de acabar com esse erro 1004, alguém tem alguma ideia de como fazer isso?

Muito obrigado desde já!

Re: Erro 1004

Enviado: 13 Jun 2016 às 14:52
por rodolfonobrega
Seguem uma tabela de exemplo com o código a ser executado!
obrigado