Explicação:
Seu problema não está totalmente claro, mas o problema parece ser que você está recebendo o erro 1004 nesta linha em seu código: last_Row = Sheets(5).Range("B" & Rows.count).End(xlUp).Row
.
Se for esse o caso, e supondo que seu gráfico seja uma "Planilha de gráfico" (ou seja, uma planilha separada que contenha apenas um gráfico), e não um gráfico que esteja simplesmente incorporado em uma "planilha padrão" (ou seja, uma planilha que contém linhas e colunas), então esse erro seria esperado.
A razão para isso é que o objeto Rows
não está disponível quando a Planilha ativa é uma "Planilha de gráfico", porque essa planilha não contém nenhuma linha (ou coluna). Claramente, essa "Folha de gráfico" é de fato a Folha ativa enquanto seu código está em execução, porque seu código é executado no acionamento do evento Mouse_Up
do gráfico.
Resolução:
A resolução para este problema é simples. Supondo que Worksheets(5)
seja uma planilha que contém linhas e colunas, substitua a linha de problema do código por essa:
last_Row = Sheets(5).Range("B" & ThisWorkbook.Worksheets(5).Rows.Count).End(xlUp).Row
Ou, uma alternativa melhor pode ser substituir a linha do problema por essas:
Dim sh As Worksheet: Set sh = ThisWorkbook.Worksheets(5)
last_Row = sh.Range("B" & sh.Rows.Count).End(xlUp).Row
Nota:
Seu código está usando quatro variáveis que não foram declaradas (duas das quais não receberam nenhum valor). Isso não está relacionado ao erro 1004, mas é uma boa prática de codificação declarar variáveis antes que elas sejam usadas.
Para ajudar a evitar esse problema no futuro, você pode incluir uma instrução Option Explicit
na parte superior do seu Módulo, o que forçará todas as variáveis desse Módulo a serem declaradas. Você pode ler mais sobre isso aqui .
Para fazer isso automaticamente para cada novo Módulo criado, ative essa opção no Editor do VBA: Ferramentas - > Opções - > Editor - > Requer declaração de variável