question

Excel VBA: 91 de erro ao definir o tipo de grafico?

Estou escrevendo uma macro para percorrer e traçar um grande número de gráficos de dispersão e estou recebendo o erro 91: variável de objeto ou com bloco não definida.
Eu acho que eu ter isolado o erro para uma linha:

ActiveChart.ChartType = xlXYScatterLines

Alguém sabe por que isso está me dando esse erro? Estou realmente confuso.

Todo o código até este ponto é basicamente:
Sub chart()
Dim n As Integer ' número de índice da planilha que vai para o gráfico

n = 3
ThisWorkbook.Worksheets(n).Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterLines
End Sub OK, então depois de experimentar um pouco, acho que o problema é realmente ao usar 'ActiveChart' para se referir a minha carta - alguém sabe por que não o seu trabalho? Minha sintaxe é idêntico ao que o arquivo de ajuda do vba excel mostra, mas apenas não o seu trabalho :( Opa, eu percebi que ele é truncado. Sim, tem um.Selecione no final. Código completo é mostrado abaixo: Sub chart() Dim n As Integer ' número de índice de planilha que o gráfico vai para n = 3 ThisWorkbook.Worksheets(n).Formas. AddChart.Select ActiveChart.ChartType = xlXYScatterLines End Sub, eu tentei usar o ' Set ActiveChart.ChartType = xlXYScatterLines' agora ele destaca ".ChartType = "e dá um erro dizendo" Compile erro: uso inválido de propriedade "@ T eu tentei isso e agora é dar um erro diferente afirmando:" erro de tempo de execução 1004: definido de aplicativo ou objeto definido erro. " O funk é que eu estava correndo muito bem ontem quando então mudei algumas coisas para que eu pudesse loop através dele e traçar um grande número de gráficos em folhas diferentes. Eu reverti as alterações de volta e agora ainda não consegue definir o tipo de gráfico... Por uma questão de fato, copiar o código em linha reta fora do arquivo de ajuda nem sequer funciona. Ele também dá o erro de tempo de execução 1004.
resposta Resposta
Eu descobri seu problema. Eu era finalmente capaz de replicar o seu erro. Deixe-me saber se eu estou especificando condições estão corretas.

    Você está executando a macro de uma folha que não seja n = 3.     Não há nenhuma carta na folha que você está executando a macro de.

Supondo que isso é correto, o problema é que ActiveChart está tentando acessar um gráfico na folha atual que não tem nenhum gráfico nele, portanto, o erro de tempo de execução. Isso ocorre porque o método Select () funciona de forma diferente quando ela é aplicada a um objeto de formas. Se você quiser fazer um gráfico a ActiveChart, você precisa usar o método Activate.

Sub chart() Dim n As Integer ' número de índice de planilha que o gráfico vai para Dim CurrentChart como gráfico de n = 3 Set CurrentSheet = ThisWorkbook.Worksheets(n) se CurrentSheet.ChartObjects.Count = 0, em seguida, CurrentSheet.Shapes.AddChart final se definir CurrentChart = CurrentSheet.ChartObjects (1) .chart CurrentChart.ChartType = xlXYScatterLines End Sub

Comentários Comentários

Guest
Vítor na 23 Mar 2023
0
Opa, parece que você está tendo alguns problemas com o VBA do Excel. Provavelmente, o erro 91 está ocorrendo porque a variável de objeto não está sendo definida corretamente. Uma alternativa seria tentar definir o tipo de gráfico usando a função Set, como você mencionou. Além disso, verifique se sua planilha está sendo referenciada corretamente e se o gráfico está ativo antes de tentar definir o tipo de gráfico. Certifique-se de estar selecionando a planilha correta antes de adicionar o gráfico. Talvez também seja útil revisar se os dados para os gráficos estão corretamente definidos. Boa sorte e espero que consiga resolver o problema!

O seu comentário
Acho que a resposta não está correta ou que você gostaria de acrescentar mais
alguma informação? Envie o seu comentário abaixo..

Guest


HTML não é permitido!

Image Code

Digite os caracteres que aparecem na imagem por isso sabemos que você é humano!

Receber um email quando alguém acrescenta outro comentário a esta pergunta


Topo da página


Home  Terms
Copyright © Accelerated Ideas 2005-2024
All rights reserved