Notifications
Clear all

Erro no comando Set: o objeto é obrigatório.

7 Posts
2 Usuários
0 Reactions
3,850 Visualizações
(@andreevandro)
Posts: 8
Active Member
Topic starter
 

Boa tarde Srs.

Já procurei em rede e nada, talvez algum colega possa me auxiliar na resposta:
Na "Plan 1" de uma pasta nova escrevo a fórmula =HOJE() na célula A1.

Depois crio a seguinte macro:

Sub Hoje()
'
Dim datadehoje As Date
Dim n As Long
Set n = 1
Set datadehoje = Worksheets("Plan1").Range(Cells(n, 1))
MsgBox datadehoje

End Sub

Quando eu tento rodar a função ele me retorna o erro: "o objeto é obrigatório".

Obs.: Esta estrutura de programação é pequena pois recria somente o problema, "n" precisa ser uma variável pois eu tenho uma coluna com várias datas e "datadehoje" também sera usado em outras funções.

 
Postado : 10/09/2012 2:26 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Eu não entendi, não seria isso???

Sub AleVBAData()
    With Sheets("Plan1").Range("A1")
    .Range("A1") = Date
     End With

End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/09/2012 4:05 pm
(@andreevandro)
Posts: 8
Active Member
Topic starter
 

Ola, Alexandre,

Esta solução uma boa alternativa para que esta planilha realmente desse certa, mas não é o ponto chave, eu apenas recriei o erro que tenho em uma macro mais longa que possui aquelas características da observação.

Explico o contexto:
"n" precisa ser uma variável que indica a linha pois vou jogar num laço para repetir a programação e incrementar esta variável de 1 em 1.
A seleção da vez, será usada em outra função por isso preciso definir a mesma e simplificar sua chamada usando um Set e como nome datadehoje.

Acho que o caminho da solução é entender de onde vem esta mensagem de "objeto é obrigatório" e como posso apenas corrigir esta programação sem abrir mão de datadehoje e cells(n,1). Mesmo assim obrigado!

 
Postado : 10/09/2012 7:26 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Saudações,

O Set não é utilizado para carregar variaveis e sim objetos.

Você utilizaria Set para carregar uma variavel como objeto passando assim todas as propriedades desse objeto para variavel.

Ex.

Dim shtExemplo as Worksheet

set shtExemplo = Thisworkbook.Sheets("Exemplo")

Ai a variavel shtExemplo terá todas as propriedades do objeto sheet.

No seu exemplo é pura e simplesmente variaveis de tipo.

Set n = 1
Set datadehoje = Worksheets("Plan1").Range(Cells(n, 1))

Não existe propriedade a serem atribuidas a esse tipo de variavel.

E deve ficar assim

n = 1
datadehoje = Worksheets("Plan1").Range(Cells(n, 1))

Espero ter ajudado.

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/09/2012 4:44 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Tente...

Sub Hoje()

    Dim datadehoje As Date
    Dim n As Long
    n = 1
    datadehoje = Worksheets("Plan1").Cells(n, 1)
    MsgBox datadehoje

End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/09/2012 9:18 am
(@andreevandro)
Posts: 8
Active Member
Topic starter
 

Obrigado Mitsueda Fabio e Alexandre, as respostas foram complementares e deram certas. Retirei os comandos Set e Range e a minha programação tanto neste exemplo quanto na prática rodaram sem problemas! Mais um tópico resolvido, tenho certeza que será útil para outros também.
Abc.

 
Postado : 13/09/2012 5:40 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Eu fico muito feliz por ter resolvido, parabéns!!! :D
Obrigado pelo retorno!!
Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/09/2012 9:33 am