Usuário com melhor resposta
Erro em tempo de execução '1004' - RANGE

Pergunta
-
Bom dia,
Já li todos (eu acho) perguntas sobre o tema, mas não consegui adaptar ao meu código.
Eu tenho uma planilha com a aba "CARTÃO", e gostaria de fazer um relatório no final.
Acontece que quando vou "formatar o relatório", preciso mesclar, adicionar grades, mudar fontes, etc. Para isso, estou pretendendo usar a função RANGE das células em questão.
Ocorre que quando eu chama a função RANGE das Células da Planilha que tenho interesse, aparece:
"Erro em tempo de execução '1004'. A método Select da Função Range falhou."
Estou colando uma parte do código para análise
Private Sub CommandButton1_Click() Dim OperadorCart(1 To 1000) As String Dim DataCart(1 To 1000) As Date Dim ValorCart(1 To 1000) As Double Dim TipoCart(1 To 1000) As String Dim NParcCart(1 To 1000) As Integer Dim RefCart(1 To 1000) As String 'Leitura de todos os dados ' CARTÃO cont_cart = 0 For i = 1 To 1000 If Sheets("CARTÃO").Cells(i + 1, 3) = "" Then i = 10000 Else OperadorCart(i) = Sheets("CARTÃO").Cells(i + 1, 1) DataCart(i) = Sheets("CARTÃO").Cells(i + 1, 2) ValorCart(i) = Sheets("CARTÃO").Cells(i + 1, 3) TipoCart(i) = Sheets("CARTÃO").Cells(i + 1, 4) NParcCart(i) = Sheets("CARTÃO").Cells(i + 1, 5) RefCart(i) = Sheets("CARTÃO").Cells(i + 1, 6) cont_cart = cont_cart + 1 End If Next i 'Escrever Relatório 'Cabeçalho Dinheiro Sheets("RELATÓRIO DIÁRIO").Select Range(Cells(3, 1), Cells(3, 10)).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge
O erro aparece nesta parte final, quando eu chamo:
Range(Cells(3, 1), Cells(3, 10)).Select
Alguém pode me ajudar por favor?
Obrigado!
Respostas
-
Prezado Anderson,
Fiz um teste aqui e parece que consegui resolver. Este erro é provocado quando o código está escrito dentro da própria planilha. Por algum motivo você só consegue setar as posições do Range dentro da própria planilha que está o código.
Solução:
Copie o seu código para um módulo e depois atribua a macro do módulo ao botão. Fiz aqui e deu certo (só não rodou a macro porque ela faz referência a um outro arquivo que eu não tenho).
Bráulio Figueiredo
braulio@braulioti.com.br - http://www.braulioti.com.br
- Marcado como Resposta Anderson Baptista Gama quarta-feira, 24 de setembro de 2014 20:10
Todas as Respostas
-
Prezado Anderson,
Pelo que eu entendi o método "Cells" da sua função está ainda fazendo referência a sua planilha antiga. Sua macro está tentando selecionar uma faixa de células que não está ativa. Tente o seguinte:
Range(ActiveSheet.Cells(3, 1), ActiveSheet.Cells(3, 10)).Select
Caso não funcione pode tentar também
Range(Sheets("RELATÓRIO DIÁRIO").Cells(3, 1), Sheets("RELATÓRIO DIÁRIO").Cells(3, 10)).Select
Boa sorte aí
Bráulio Figueiredo
braulio@braulioti.com.br - http://www.braulioti.com.br
-
Olá Bráulio,
Obrigado pela atenção.
Tentei substituir os códigos referidos, mas não surgiram efeito. A mesnsagem de erro que apareceu foi:
"Erro em tempo de execução '1004'. A método Range da Função '_Worksheet' falhou"
Eu pensei que o erro era por nao estar selecionado, por isso fiz a linha de comando:
Sheets("RELATÓRIO DIÁRIO").Select
Alguma sugetão?
-
Realmente só esbarrei com este erro nesta situação. Pode me passar por e-mail a planilha para que eu possa dar uma olhada? Se for o caso pode zerar os valores e substituir o nome dos fornecedores. Só para eu poder trabalhar com um exemplo real
Bráulio Figueiredo
braulio@braulioti.com.br - http://www.braulioti.com.br
-
Prezado Anderson,
Fiz um teste aqui e parece que consegui resolver. Este erro é provocado quando o código está escrito dentro da própria planilha. Por algum motivo você só consegue setar as posições do Range dentro da própria planilha que está o código.
Solução:
Copie o seu código para um módulo e depois atribua a macro do módulo ao botão. Fiz aqui e deu certo (só não rodou a macro porque ela faz referência a um outro arquivo que eu não tenho).
Bráulio Figueiredo
braulio@braulioti.com.br - http://www.braulioti.com.br
- Marcado como Resposta Anderson Baptista Gama quarta-feira, 24 de setembro de 2014 20:10
-