Notifications
Clear all

[Resolvido] Mensagem "Variável do bloco with não definida"

3 Posts
2 Usuários
0 Reactions
1,771 Visualizações
Bautto
(@bautto)
Posts: 70
Estimable Member
Topic starter
 

Colegas, boa tarde.

Na planilha anexa, quero que os meses sejam preenchidos automaticamente, e sempre na primeira coluna não utilizada da linha 3, que será constante.

Fiz a rotina utilizando o recurso MonthName, uma vez que será sempre o mês em curso que deverá ser  gravado na célula.

Recebo a mensagem "A variável do objeto ou a variável do bloco with não foi definida".

Também tenho dúvida de que a instrução "Sheets(Plan).Cells(lin, col).Value = MesRef" esteja correta.

Peço orientação para os colegas mais experientes.

Agradeço a atenção.

 
Postado : 15/02/2023 2:27 pm
Tags do Tópico
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Postado por: @bautto

Recebo a mensagem "A variável do objeto ou a variável do bloco with não foi definida".

@Bautto, vc dimensionou a variável "col" como tipo objeto Range ao invés de Long, por isso o erro.

Postado por: @bautto

Também tenho dúvida de que a instrução "Sheets(Plan).Cells(lin, col).Value = MesRef" esteja correta.

Está incorreta, além de ter muita redundância em seu código nesse sentido. Aliás, vc nem precisaria ter dimensionado uma variável tipo Worksheet: se no código vc usa o CodeName do objeto pra retornar o Name pra então atribuir a um objeto do mesmo tipo que o próprio CodeName retorna... não há sentido nisso.

Por exemplo, em seu caso, ao invés de:

Set Plan = ThisWorkbook.Worksheets(Planilha1.Name)

vc poderia ter atribuído logo:

Set Plan = Planilha1

Mas nem isso seria necessário, pois vc poderia usar simplesmente

Planilha1

Sem necessidade de dimensionar a variável Plan antes. Aí a atribuição ficaria:

col = Planilha1.Cells(lin, Columns.Count).End(xlToLeft).Column + 1

Ou, ainda, como vc está no módulo da Planilha, poderia simplificar ainda mais e usar a palavra chave Me

col = Me.Cells(lin, Columns.Count).End(xlToLeft).Column + 1

 

Então o trecho

Sheets(Plan).Cells(lin,......

Para funcionar, deve ser alterado para

Sheets(Plan.Name).Cells(lin,......

Ou

Plan.Cells(lin,......

Ou

Planilha1.Cells(lin,......

Ou ainda

Me.Cells(lin,......

 
Postado : 15/02/2023 10:04 pm
Bautto
(@bautto)
Posts: 70
Estimable Member
Topic starter
 

Edson, muito obrigado. Foi muito explicito e didático.

Como não tenho muita experiência, pequei pelo excesso, apesar de ter buscado informações em sites e vídeos...

Grato mesmo.

 
Postado : 23/02/2023 3:08 pm