Página 1 de 1

Código VBA funciona no debug (F8) mas não roda no automático

Enviado: 08 Fev 2021 às 01:17
por onadir
Pessoal, fiz a seguinte rotina:
Sub Fornec_cliente()
Dim valor
valor = ActiveCell
Sheets("Recibo").Select
Range("h15").Select
ActiveCell = valor
End Sub

quando rodo pelo F8 executa perfeito. mas no automático simplesmente não funciona.

Re: Código VBA funciona no debug (F8) mas não roda no automático

Enviado: 08 Fev 2021 às 11:15
por osvaldomp
onadir escreveu: 08 Fev 2021 às 01:17 ... mas no automático simplesmente não funciona.
Explique com exatidão o que você quer dizer com "no automático ... não funciona"

O código abaixo faz o que o seu supostamente faz.
Código: Selecionar todos
Sub ReplicaConteúdo()
 Sheets("Recibo").[H15] = ActiveCell.Value
End Sub

Re: Código VBA funciona no debug (F8) mas não roda no automático

Enviado: 08 Fev 2021 às 15:00
por onadir
osvaldomp escreveu:
onadir escreveu: 08 Fev 2021 às 01:17 ... mas no automático simplesmente não funciona.
Explique com exatidão o que você quer dizer com "no automático ... não funciona"

O código abaixo faz o que o seu supostamente faz.
Código: Selecionar todos
Sub ReplicaConteúdo()
 Sheets("Recibo").[H15] = ActiveCell.Value
End Sub
No automático seria clicar na célula onde tem o valor e na planilha recibo entra o valor clicado sem precisar digitar.

Re: Código VBA funciona no debug (F8) mas não roda no automático

Enviado: 08 Fev 2021 às 15:05
por onadir
nesse código que você enviou também usando o F8 funcionou bem. no entanto fecha o desenvolver e executo clicando em um determinado valor e depois vou na plan recibo, o valor não aparece.

Re: Código VBA funciona no debug (F8) mas não roda no automático

Enviado: 08 Fev 2021 às 15:12
por onadir
Recibo_estudo e alteraçôes_020221.xlsm

Re: Código VBA funciona no debug (F8) mas não roda no automático

Enviado: 08 Fev 2021 às 15:35
por osvaldomp
onadir escreveu: 08 Fev 2021 às 15:00 No automático seria clicar na célula onde tem o valor e na planilha recibo entra o valor clicado sem precisar digitar.
Por "clicar na célula" você quer dizer "selecionar a célula", é isso ?

Se sim, então qualquer célula que for selecionada na planilha (são 17.179.869.184 células) o conteúdo dela será replicado em H15 da planilha Recibo.
É isso que você quer ?

Se sim, ao selecionar manualmente qualquer célula para inserir nela um valor, então antes de inserir, o valor anterior será replicado ... não vejo sentido.

Explique com exatidão o que você quer fazer.

E para disparar um código após efetuar manualmente algum evento na planilha (talvez isso que você chame de "automático") você deve colocar o código no módulo da própria planilha e não em um módulo comum (não no Módulo1, ou no Módulo2, ...).

No editor de VBA aplique duplo clique no nome da planilha de origem dos dados, em seguida clique na setinha da caixa (Geral) escolha Worksheet e em seguida clique na setinha da caixa à direita para ver os eventos disponíveis. Veja se algum deles pode fazer a operação desejada.

Retorne se precisar de ajuda.

Re: Código VBA funciona no debug (F8) mas não roda no automático

Enviado: 08 Fev 2021 às 23:56
por onadir
Caro Osvaldo.
talvez eu não soube me expresar direito.
o que eu preciso: na planilha fornecedor tem um campo chamado nome, ao selecionar um nome , ele vá direto para a celula h15 do recibo. isso evita de digitar esse nome.
o código conforme relatado acima faz exatamente isso. ao selecionar um valor na plan fornec_cliente , automaticamente ele transportar para a celula h15 do recibo.

Re: Código VBA funciona no debug (F8) mas não roda no automático

Enviado: 08 Fev 2021 às 23:59
por onadir
em continuidade: qual o problema se eu rodar o código através do F8, executa exatamente como eu quero. no entanto fecho o edito de vba e faço novamente através das plan. o código não executa. não estou entendo porque não executa, se através do F8 da certinho. tenho outras planilhas que fiz a mesma coisa e funciona perfeito. apenas nesse arquivo não está executando.
Abs

Re: Código VBA funciona no debug (F8) mas não roda no automático

Enviado: 09 Fev 2021 às 01:09
por Raygsson
Coloque esta Sub dentro da Planilha2 (Fornec_cliente)
A rotina vai ser acionada com um duplo click em qualquer nome da Planilha2 (Fornec_cliente).
Código: Selecionar todos
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Target.Column = 2 And Target.Value <> "" Then
            Sheets("Recibo").Range("H15") = Target              'NOME
            Sheets("Recibo").Range("N15") = Target.Offset(0, 1) 'CPF/CNPJ
            Sheets("Recibo").Range("H16") = Target.Offset(0, 2) 'ENDEREÇO
            Sheets("Recibo").Activate
        End If
End Sub

Re: Código VBA funciona no debug (F8) mas não roda no automático

Enviado: 09 Fev 2021 às 08:36
por osvaldomp
1. o seu código é uma Sub corretamente instalada em um módulo comum e por isso ele precisa de um comando do usuário para dispará-lo.
Esse comando pode ser de várias formas:
a) no editor de VBA via F8
b) via atalho de teclado (para atribuir um atalho a partir de qualquer planilha ativa clique Alt+F8 | Opções)
c) via um botão ou outra figura colocado em qualquer planilha e vinculado ao código
d) a partir de qualquer planilha ativa via Alt+F8 | Executar

e.1) outra opção é disparar o código "chamando-o" a partir de outro código, ex:
Sub ChamaMacro
MinhaMacro
End Sub


A Sub ChamaMacro deverá ser disparada por uma das vias citadas acima.

e.2) pode também ser "chamado" a partir de um código disparado por algum evento de planilha ou de arquivo, ex:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 Then MinhaMacro
End Sub


Neste último exemplo o código MinhaMacro será disparado ao ser selecionada, manualmente ou via macro, uma célula da coluna B da planilha em cujo módulo a Sub Worksheet_SelectionChange() estiver instalada.

2. com base na descrição do seu penúltimo post, me parece que o código abaixo irá fazer o que você quer .
Ele deve ser instalado no módulo da planilha Fornec_cliente (não é "dentro da planilha", pois não é possível colocar algo "dentro" de uma figura plana :o )
Para acessar o módulo clique na guia daquela planilha e escolha "Exibir Código", aí cole na janela vazia que irá se abrir.
Código: Selecionar todos
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Column = 2 Then Sheets("Recibo").[H15] = Target.Value
End Sub
#
funcionamento - ao selecionar uma célula na coluna B da planilha Fornec_cliente o conteúdo da célula selecionada será replicado em H15 da planilha Recibo.

Re: Código VBA funciona no debug (F8) mas não roda no automático

Enviado: 09 Fev 2021 às 11:15
por Raygsson
:shock: :lol: