Ir ao conteúdo
  • Cadastre-se

Nomear itens no cadastro via vba


Posts recomendados

Pessoal, boa tarde.

 

estou fazendo uma planilha de cadastro de fornecedores e me deparei com um problema, eu preciso dar um nome no conjunto de produtos do fornecedor que será cadastrado

 

e eu inclui um campo no cadastro chamado de codenome

 

queria que o nome desses produtos fosse esse codenome para fazer um indireto depois:

 

Sub Macro2()
'
' Macro2 Macro
'

    Range("I2:K2").Select
    ActiveWorkbook.Names.Add Name:=Range("H2"), RefersToR1C1:="=Plan2!R2C9:R2C11"
    
End Sub

Mas não deu certo, poderiam me ajudar?

cadastro 1.xlsm

Link para o comentário
Compartilhar em outros sites

É estranho. Na janela que você postou nem aparece o nome 'pura', já existente antes de rodar o código.

Parece que você está mostrando a janela de outro arquivo.

 

Clicando na setinha da "Caixa de nome" (logo acima da letra que identifica a coluna 'A') deve aparecer o nome 'pura' e depois de rodar o código deverá aparecer também o nome 'codinome', tanto na "Caixa de nome" como na janela "Gerenciador de nomes".

 

Link para o comentário
Compartilhar em outros sites

4 horas atrás, diego_janjao disse:

@osvaldomp

 

poderia disponibilizar o arquivo?

 

Não entendi. A sua pergunta é se eu posso disponibilizar ou se você pode?

Fiz o teste no seu arquivo cujo link está no primeiro post. Não é nesse arquivo que você está testando o comando? Se não for, disponibilize o outro.

Link para o comentário
Compartilhar em outros sites

 

40 minutos atrás, diego_janjao disse:

@osvaldomp Funcionou perfeitamente.

 

E entendi o que ocorreu.

 

No seu arquivo, você adicionou a linha que você tinha me enviado, no meu caso, eu troquei por tudo.

 

 

 

Não foi exatamente isso. Eu coloquei no seu código o comando que eu havia sugerido e mantive os que já existiam. Porém, observe que os comandos que já existiam estão transformados em "comentários", com apóstrofo no início da linha e fonte na cor verde, o que significa que esses comandos não são executados. Então na prática eu substituí os comandos originais que não funcionavam pelo novo comando, isto quer dizer que eu não adicionei como você avaliou aí acima.

Quanto ao seu último código que também não funcionou não sei que salada você fez.

 

Resumindo:

O seu código original que travava durante a execução é este abaixo:

Sub Macro2()
'
' Macro2 Macro
'

    Range("I2:K2").Select
    ActiveWorkbook.Names.Add Name:=Range("H2"), RefersToR1C1:="=Plan2!R2C9:R2C11"
    
End Sub

O código que funciona é este abaixo:

Sub Macro2()
 ActiveWorkbook.Names.Add Name:=Sheets("Plan2").[H1], RefersTo:="=Plan2!$I$2:$K$2"
End Sub

Sugestão: não utilize o comando 'Select' ao escrever os seus códigos. Esse comando raramente é necessário, provoca lentidão na execução (mesmo utilizando o ScreenUpdating=False) e ainda faz movimentação da tela.

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois...
Sub Macro2()

'Olá bom dia

Eu dei uma olha nos códigos, observei que tanto um como o outro, se o campo [h2] não for preenchido vai da erro

' Macro2 Macro

'

If Plan1.Range("H2").Value = "" Then
        MsgBox "Por favor informe o nome para o campo!", vbExclamation, "Cancelado"
        Plan1.Range("H2").Activate
        Exit Sub
    Else

        ActiveWorkbook.Names.Add Name:=Sheets("Plan1").[H1], RefersTo:="=Plan2!$I$2:$K$2"
        '    Range("I2:K2").Select
        '    ActiveWorkbook.Names.Add Name:=Range("H2"), RefersToR1C1:="=Plan2!R2C9:R2C11"
    End If

End Sub

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olá bom dia

Substitua a Macro inteira por esta.

If Plan1.Range("H2").Value = "" Then 'Verifica se o campo esta vazio
        'se o campo esta vazio, envia uma mensagen
        MsgBox "Por favor informe o nome para o campo!", vbExclamation, "Cancelado"
        Plan1.Range("H2").Activate 'Ativa a Célula H2 para que você informe o nome do campo 
        Exit Sub
    Else
        'Pega o nome informado em H2 da Plan1, e Nomeia o Intervalo ("I2 a K2 da Plan2")
         ActiveWorkbook.Names.Add Name:=Sheets("Plan1").[H1], RefersTo:="=Plan2!$I$2:$K$2"
    End If
End Sub

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Enival Bento  aproveitando seu conhecimento, há alguma maneira para a macro acrescentar somente os espaços preenchidos?

 

Porque hoje funciona assim:

 

Se o fornecedor tem apenas 2 produtos, os outros 3 campos ficarão vazios e acrescentaria 0 nos dados, assim:

 

Produto 1

Produto 2

0

0

0

 

E o nome seria pra eles todos, aí eu sempre tenho que arrumar manualmente.

 

De antemão, obrigado.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!