Ir ao conteúdo
  • Cadastre-se
guicrissantos

Excel código vba excel se célula negativo

Posts recomendados

Pessoal,

Bom dia!

Estou precisando de uma ajudinha.

Tenho uma planilha cuja célula A1, traz o resultado da soma de A2:A10.

Preciso que sempre que A1 >=-3%, retorne uma msgbox dando-me um alerta tipo "você atingiu o valor máximo permitido. Continuar mesmo assim?"

 

Alguém poderia me ajudar por favor?

 

No aguardo,

Guilherme

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, guicrissantos disse:

 ... "você atingiu o valor máximo permitido. Continuar mesmo assim?"

 

 

O que você quer fazer se a resposta for "sim" ?

O que você quer fazer se a resposta for "não" ?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, osvaldomp disse:

 

O que você quer fazer se a resposta for "sim" ?

O que você quer fazer se a resposta for "não" ?

Olá Sr. Osvaldo,

Obrigado pela ajuda.

Vou colocar um anexo para entender melhor minha necessidade.
 

Nesta planilha anexa, A1 = total da soma do intervalo C1:C10.

Sempre que A1 atingir >=-3%, deverá roar a macro e trazer uma msgbox dando um alerta tipo:

"Você atingiu o valor máximo permitido!"

"Continuar mesmo assim?"

Optando por SIM:

A macro é ignorada e continua monitorando A1 e repete a mesma pergunta sempre que A1 for alterada (após inclusão de novos valores no intervalo) aumentando o limite de -3% ou seja, continuou, somou mais 1% no intervalo logo, A1 ficará agora -4%, novamente a macro roda e traz a mesma mensagem e SÓ PARA DE RODAR e trazer o alerta com as opções SIM ou NÃO quando o usuário optar por NÃO continuar.

 

Planilha modelo abaixo:

https://drive.google.com/file/d/1eBfSXwJDpQqQIDH3d6ufYq-0cZbGJ3am/view?usp=sharing

 

Obrigado amigo pela ajuda.

No aguardo,

Guilherme

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por gentileza, disponibilize o arquivo diretamente aqui no fórum.

 

2 horas atrás, guicrissantos disse:

 ... aumentando o limite de -3% ou seja, continuou, somou mais 1% no intervalo logo, A1 ficará agora -4%, ... ~~~> não seria -2% ? ~~~> (-3+1=-2) ~~~> (-3-1=-4)

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sr. Guilherme, veja se atende.

Instale uma cópia do código abaixo no módulo da Planilha1.

 

Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, [C1:C10]) Is Nothing Then Exit Sub
 If [A1] >= -0.03 And [P1] = "" Then
  If MsgBox("Você atingiu o valor máximo permitido!" & vbLf & vbLf & _
   "Continuar mesmo assim?", vbYesNo + vbQuestion) = vbNo Then [P1] = "x"
 End If
End Sub

funcionamento - o código será disparado por alteração manual no intervalo C1:C10 e irá monitorar o valor de A1 com base no critério estabelecido por V. Sª..

Ao clicar em "Não" o código irá inserir "x" em P1 (altere se desejar) e não mais fará o monitoramento de A1 até que o usuário limpe P1.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sr. Osvaldo,

Boa tarde!

Não tenho dúvidas que o código irá funcionar, mas preciso de um pequeno ajuste.

Modificando um pouco a planilha temos:

Célula P11 = Mostra o valor único como se fosse o total (Que antes era a soma do intervalo [C1:C10]

Célula N9 = Mostra o valor máximo (Que antes era -3%). 

 Obs.: Preciso que o vba busque o valor que está nesta célula para fazer a devida comparação.
          Este valor muda de acordo com os lançamentos da planilha.

Célula N10 = Ficará o "X" (Que antes seria no [P1]

 

Sendo assim:

A macro visa trazer a msgbox, SEMPRE que a célula P11 for >= ao valor que está na célula N9 (que é o limite estabelecido).

Se o  P11 for >= N9, traz a mensagem:

"Você atingiu o valor máximo permitido!"

e dá opção de continuar (o que irá alterar o valor da P11 e neste caso a msgbox se repete até que seja marcado NÃO na opção de continuar.

Marcando Não, o "X" deve ficar em N10.

 

 

+/- assim...

 

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, [P11]) Is Nothing Then Exit Sub

If [P11] >= (Aqui a macro deve buscar o valor da célula [N9] And [N9] = "" Then

If MsgBox("Você atingiu o valor máximo permitido!" & vbLf & vbLf & _

"Continuar mesmo assim?", vbYesNo + vbQuestion) = vbNo Then [N10] = "x"

End If

End Sub

 

Poderia me ajudar?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Coloque este no lugar do anterior.

 

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address <> "$P$11" Then Exit Sub
 If Target.Value >= [N9] And [N10] = "" Then
  If MsgBox("Você atingiu o valor máximo permitido!" & vbLf & vbLf & _
   "Continuar mesmo assim?", vbYesNo + vbQuestion) = vbNo Then [N10] = "x"
 End If
End Sub

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sr. Osvaldo,

 

Quando eu coloco o código na planilha modelo que lhe enviei, funciona.

Mas quando eu coloco noutra planilha que estou tentando implantar o código, ao tentar executar, aparece a caixa de macros como se eu tivesse que criar um botão.

 

Como resolvo isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 minutos atrás, guicrissantos disse:

 ... ao tentar executar, ... ~~~> o que exatamente você quer dizer com isso ?

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho uma planilha muito complexa que busca dados de outras planilhas, por isso não mandei ela para você.

 

Tudo se resume numa situação...

você vai lançando os dados de modo que os valores vão sendo calculados por fórmulas e mostrados um abaixo do outro na coluna P e o resultado dessa coluna, é mostrado na célula P162.

P11 = P162 ou seja, o valor que totaliza na P162, mostra igual na P11.

 

Já na célula N7 está o limite em percentual (-3%)

Na célula N9 está o limite em R$ (-0,03)

 

A macro deve (sem ter que criar commandbutton, trazer o msgbox sempre que P11 for >= (maior ou igual) ao valor de N7 (Percentual) ou N9 (Reais).

 

Exemplo:

Se N7 está -2,65% e N9 (-0,0265), não virá nenhuma msgbox

Mas ao atingir -3,00% na N7 e -0,03 na N9, tras a msgbox conforme definido dando opção de continuar ou não.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. você não respondeu ao que perguntei

2. o que você descreveu no post #11 não bate com o que você escreveu no post #7

3. o post #11 já é a terceira versão da planilha :confused:

 

Disponibilize uma amostra da planilha original, mesmo sendo ela "complexa".

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

3. o post #11 já é a terceira versão da planilha

SIM.

 

Anexo planilha original.

Insira -1 na célula P17 e verá que irá aumentar o percentual negativo de P11.

É neste momento que deve trazer a mDRE.2020_Modelo.rarsgbox

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Em 03/04/2020 às 16:22, guicrissantos disse:

 ... você vai lançando os dados ...

Os dados são lançados manualmente? Em quais células ?

 

de modo que os valores vão sendo calculados por fórmulas e mostrados um abaixo do outro na coluna P e o resultado dessa coluna, é mostrado na célula P162.

Eu não consegui acessar o conteúdo de P162, mas com base no valor mostrado naquela célula não me parece que tal valor seja resultado de alguma soma.

 

 

Em 03/04/2020 às 16:54, guicrissantos disse:

 

Insira -1 na célula P17 e verá que irá aumentar o percentual negativo de P11.

Você informou na mensagem anterior que há fórmulas na coluna P, no entanto aqui você sugere para inserir um valor em P17. Isso quer dizer que em P17 não há fórmula?

Ainda, fiz algumas tentativas mas não consegui acessar nem P17 e nem outra célula de interesse porque você disponibilizou uma planilha protegida.Não evoluímos.

 

Ainda, conforme comentei no post #6 o código que passei deveria ser instalado no módulo da planilha, no entanto, no seu arquivo o código está no Módulo2. Aí não irá funcionar.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sr. Osvaldo,

Boa tarde!

 

Muito obrigado pela atenção e ajuda.

 

 ... você vai lançando os dados ...

Os dados são lançados manualmente? Em quais células ?
Sim, o usuário vai lançando apenas "-1" ou "1" na coluna "O".

Dependendo do valor lançado, o resultado da coluna "P" vai "positivando" ou "negativando".

Atingindo o valor negativo máximo estabelecido na célula "N7", traz a mensagem que estamos tentando implantar.

O comando "X" criado no seu código poderá ficar na célula "N10" pois as linhas 7 a 10 trabalharão ocultas. 

 

 

 

...de modo que os valores vão sendo calculados por fórmulas e mostrados um abaixo do outro na coluna P e o resultado dessa coluna, é mostrado na célula P162.

Eu não consegui acessar o conteúdo de P162, mas com base no valor mostrado naquela célula não me parece que tal valor seja resultado de alguma soma.

Na verdade não é uma soma e sim, o último valor lançado.

De acordo que o usuário vai lançando seus resultados "-1" ou "1" na coluna "O", o último resultado da coluna "P", vai sendo mostrado na célula "P11" que é nossa célula base para fins da execução da macro.

 

 

...Insira -1 na célula P17 e verá que irá aumentar o percentual negativo de P11.

Você informou na mensagem anterior que há fórmulas na coluna P, no entanto aqui você sugere para inserir um valor em P17. Isso quer dizer que em P17 não há fórmula?

Ainda, fiz algumas tentativas mas não consegui acessar nem P17 e nem outra célula de interesse porque você disponibilizou uma planilha protegida.Não evoluímos.

Desculpe, a inserção do valor "-1" ou "1" deve ser feita na coluna "O" e não na "P" como eu disse anteriormente.
Perdão.

A fórmula está na "P" mesmo e esta deve só se altera de acordo com o valor lançado na coluna "O".

 

Ainda, conforme comentei no post #6 o código que passei deveria ser instalado no módulo da planilha, no entanto, no seu arquivo o código está no Módulo2. Aí não irá funcionar.

Coloquei o código no módulo da planilha, mas mesmo assim, ele não está sendo executado automaticamente.
Poderia verificar por favor o que eu fiz de errado?



Sr. Osvaldo,

Vejo que és muito experiente em VBA.

Sou marinheiro novo e estou apanhando um pouco.

Muito obrigado pela sua paciência, dedicação e presteza  nas respostas.

 

 

Nesta mesma planilha, tenho um "BANCO DE DADOS" que armazena os resultados operacionais do dia de acordo com a data do dia da planilha "TRADES".

Na planilha "TRADES" tem um botão verde no rodapé chamado "GRAVAR DADOS".
Preciso criar uma macro que ao clicar neste botão, os seguintes valores descritos abaixo, são gravados na planilha "BANCOdeDADOS" nos campos respectivos a data.

Se puder me auxiliar neste código também, ficarei extremamente grato.

 

DADOS A SEREM TRANSPORTADOS DA PLANILHA "TRADES" PARA PLANILHA "BANCOdeDADOS":
(I5) para célula correspondente a data da coluna E "Alcance do dia" na planilha BD
(P4) para célula correspondente a data da coluna J "Total Investido Dia" na planilha BD

(I11) para célula correspondente a data da coluna L "Payout Médio" na planilha BD

(P3) para célula correspondente a data da coluna  M "Trades Realizados" na planilha BD

(S3) para célula correspondente a data da coluna N "Acertos" na planilha BD

 

Se porventura tiver algum dia que não for feito nenhum lançamento, os campos deste dia na planilha "BD" devem conter "" .

 

Após gravar estes dados, entra em ação o botão "LIMPAR DADOS" que já está funcionando na planilha "TRADES".

 

Anexo, planilha desbloqueada.

 

Desde já muito obrigado por tudo.

É permitido falarmos por WhatsApp?
Se sim, podemos trocar email?

 



 

 

 

DRE.2020_Modelo.V3.rar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque uma cópia do código abaixo no lugar do anterior (no arquivo que você publicou no post #15 o código está no módulo correto).

Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, [O12:O161]) Is Nothing Then Exit Sub
 If [P11] <= [N7] And [N10] = "" Then
  If MsgBox("Você atingiu o valor máximo permitido!" & vbLf & vbLf & _
   "Continuar mesmo assim?", vbYesNo + vbQuestion) = vbNo Then [N10] = "x"
 End If
End Sub

funcionamento - o código será disparado após alteração manual em qualquer célula do intervalo O12:O161, visto que as células desse intervalo interferem no valor de P11, em seguida irá verificar se P11 <= N7, se sim, irá exibir a Caixa de Mensagem, e essa comparação entre P11 e N7 seguirá sendo feita até que seja escolhido "Não" na Caixa, e somente será retomada se o usuário limpar N10

___________________________________________________________________________________

 

dica (sem relação com a questão tratada acima)

na coluna Q, a partir de Q12 existe esta fórmula na sua planilha:

Q12 =$K$3+J12

Q13 =$K$3+J12+J13

Q14 =$K$3+J12+J13+J14

...

...

Q161 =$K$3+J12+J13+J14+ ... + J161 ~~~> a fórmula que está em Q161 tem 667 caracteres, além de todas as fórmulas dessa coluna terem sido elaboradas individualmente, pois arrastar não seria uma opção.

 

Se alterar para esta em Q12 ~~~> =SOMA(K$3;J$12:J12) e estender pela coluna, então em Q161 ficará =SOMA(K$3;J$12:J161), e a fórmula terá apenas 20 caracteres em lugar dos 667 da fórmula atual, além da vantagem de poder estender arrastando pela coluna ou via duplo clique no canto inferior direito de Q12

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Osvaldo,

Não sei nem o que dizer.
O código da msgbox deu certinho agora e funcionou perfeitamente.

Muito obrigado mesmo.

 

Sobre sua sugestão para alteração da fórmula em Q12, sem dúvida alguma é uma excelente opção.
Como disse, sou novo em fórmulas e VBA e tive um baita trabalho para desenvolver a fórmula gigante.
Já alterei no projeto original.
Muito obrigado mesmo.




Sem querer abusar da sua sabedoria e disponibilidade, sobre essa etapa descrita abaixo, será que podes me auxiliar em como desenvolver esse código?

 

Nesta mesma planilha, tenho um "BANCO DE DADOS" que armazena os resultados operacionais do dia de acordo com a data do dia da planilha "TRADES".

Na planilha "TRADES" tem um botão verde no rodapé chamado "GRAVAR DADOS".
Preciso criar uma macro que ao clicar neste botão, os seguintes valores descritos abaixo, são gravados na planilha "BANCOdeDADOS" nos campos respectivos a data.

Se puder me auxiliar neste código também, ficarei extremamente grato.

 

DADOS A SEREM TRANSPORTADOS DA PLANILHA "TRADES" PARA PLANILHA "BANCOdeDADOS":
(I5) para célula correspondente a data da coluna E "Alcance do dia" na planilha BD
(P4) para célula correspondente a data da coluna J "Total Investido Dia" na planilha BD

(I11) para célula correspondente a data da coluna L "Payout Médio" na planilha BD

(P3) para célula correspondente a data da coluna  M "Trades Realizados" na planilha BD

(S3) para célula correspondente a data da coluna N "Acertos" na planilha BD

 

Se porventura tiver algum dia que não for feito nenhum lançamento, os campos deste dia na planilha "BD" devem conter "" .

 

Após gravar estes dados, entra em ação o botão "LIMPAR DADOS" que já está funcionando na planilha "TRADES".

 

Anexo, planilha desbloqueada (V4).

 

No aguardo,

Guilherme

DRE.2020_Modelo.V4.rar

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Experimente:

Sub GravarDados()
 Dim d As Long
  With Sheets("BANCOdeDADOS")
   d = .Columns(2).Find(Date, LookIn:=xlValues).Row
   .Cells(d, 5) = [I5]: .Cells(d, 10) = [P5]: .Cells(d, 12) = [I11]
   .Cells(d, 13) = [P3]: .Cells(d, 14) = [S3]
   On Error Resume Next
   d = .Columns(2).Find(Date, LookIn:=xlFormulas).Row
  End With
End Sub

obs.

1. instale uma cópia do código acima em um novo módulo (no menu do editor de VBA Inserir / Módulo)

2. vincule o código acima ao botão GRAVAR DADOS

3. "(P4) para célula correspondente a data da coluna J..." ~~~> alterei para P5, que me parece ser o correto

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Sr. Osvaldo,

Tudo bem?

 

A mais de uma semana estou tentando logar aqui com minha conta para dar prosseguimento contigo no post #18, mas não conseguia de forma alguma logar.
Só hoje consegui mudando de navegador.

Mas vamos lá...

 

Implantei o código que o senhor me indicou no post #18 e até transferiu os dados certinhos porém, não sei porque, está transferindo valores errados.

 

Exemplo:

Observe na planilha que vou postar agora pra você (DRE.2020_Modelo.V5) as seguintes informações:

 

PLANILHA TRADES

Valor da célula i5 correto é -30%, porém, o código colou na guia BANCOdeDADOS na célula e109 o valor de 10406,04%

Colou no lugar certinho, porém, valor nada a ver.

 

Valor da célula p5 correto é R$78,76, porém, o código colou na guia BANCOdeDADOS na célula j109 o valor de 0 (nada)

Colou no lugar certinho, porém, valor nada a ver.

 

Valor da célula i11 correto é 88,000%, porém, o código colou na guia BANCOdeDADOS na célula k109 o valor de 0 (nada)

Colou no lugar certinho, porém, valor nada a ver.

 

Valor da célula p3 correto é 4, porém, o código colou na guia BANCOdeDADOS na célula l109 o valor de 110,4622

Colou no lugar certinho, porém, valor nada a ver.

 

Valor da célula s3 correto é 0, porém, o código colou na guia BANCOdeDADOS na célula n109 (correto seria na célula m109)  o valor de 0,03

Colou no lugar certinho, porém, valor nada a ver.

 

Em outras palavras, migrou certinho datas e posições de algumas células, mas formatos e valores totalmente incoerentes.

 

Poderia me ajudar a solucionar esse problema Sr. Osvaldo?

DRE.2020_Modelo.V5.rar

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Em 08/04/2020 às 19:49, guicrissantos disse:

Na planilha "TRADES" tem um botão verde no rodapé chamado "GRAVAR DADOS".

Preciso criar uma macro que ao clicar neste botão,...

Lembra disso, Sr. Guilherme ?

 

 

Em 09/04/2020 às 10:45, osvaldomp disse:

2. vincule o código acima ao botão GRAVAR DADOS

Lembra disso, Sr. Guilherme ?

 

Se o senhor tivesse seguido o que fora combinado conforme as mensagens acima, a planilha ativa ao rodar o código obrigatoriamente seria a planilha TRADES, no entanto o senhor decidiu seguir a sugestão do Duende 🃏e rodou o código com a planilha BANCOdeDADOS sendo a planilha ativa.

 

Agora que o Duende já se divertiu, experimente fazer conforme o que foi combinado. 😋

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sr. Osvaldo,

Desculpe-me pela interrupção do Duende.

Vou pegar ele e decapta-lo. kkk...

 

Fiz da forma como me orientou no post #20 e deu certinho PORÉM COLOCANDO UM "BOTÃO DE FORMAS BÁSICAS".
Não consegui fazê-lo com "Botão de controle Active X".
Se puder me ajudar neste formato, pretendo deixar todos os botões neste formato.


Mas tem outras duas observações que ocorreram:

 

Valor da célula (P3) correto é NUMERO INTEIRO, porém, o código colou na guia BANCOdeDADOS na célula correta, VALOR EM DECIMAIS e também acabou mudando também, a formatação da célula da direita que possui uma fórmula, tirando-a.

Poderia verificar por favor por disso?

 

Outra coisa..

O código está levando em consideração a data do relógio do computador e não a data inserida na célula B7 da planilha Trades.

Tem como fazer com que o código faça referência a essa célula ao invéz da hora do computador?

 

no mais, muiiiiiiiiiiiiiiiiiiiiiiiiiito obrigado por toda sua ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@guicrissantos

 

O Osvaldo vem te ajudando e você não tem clicado em Curtir...

 

Quando a dúvida estiver sanada, marque o tópico como Resolvido. (Na minha assinatura tem um link para uma instrução de como proceder.).

 

[]s

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, guicrissantos disse:

Não consegui fazê-lo com "Botão de controle Active X".
Copie da segunda até a penúltima linha do código / Desenvolvedor / Modo de Design / clique com o direito sobre o botão e escolha Exibir Código / cole a parte copiada do código

 

Valor da célula (P3) correto é NUMERO INTEIRO, ..

Formate a coluna destino dos dados com formatação igual à célula de origem dos dados.

 

O código está levando em consideração a data do relógio do computador e não a data inserida na célula B7 da planilha Trades.

Em B7 não há data. Não seria B11 ?

Eu optei por considerar a data do computador porque no arquivo do post #17 em B11 você colocou a função HOJE() então utilizei Date.

No código, substitua Date por [B11] ou por [B7], se na sua planilha a data está em B7.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, Patropi disse:

@guicrissantos

 

O Osvaldo vem te ajudando e você não tem clicado em Curtir...

 

Quando a dúvida estiver sanada, marque o tópico como Resolvido. (Na minha assinatura tem um link para uma instrução de como proceder.).

 

[]s

Sr. Patropi...
Desculpe-me...
Sou novo aqui no Clube do Hardware e ainda não apredi a utilizar todas as ferramentas.
Mas acabei de dar o joinha em todas as postagens sua e do Sr. Ovaldo.

Muito obrigado.

adicionado 0 minutos depois
1 hora atrás, osvaldomp disse:

 

Sr. Osvaldo...

 

TUDO FUNCIONANDO PERFEITAMENTE AGORA!

 

Muiiiiiiiiiiiiiiiiiiiiiiiiito obrigado pela sua ajuda.

 

Muita paz e saúde aí.

 

Abraço e até a próxima.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Sr. Osvaldo...

Tudo bem?

 

Será que pode me ajudar novamente...

 

Tenho uma planilha com um botão que chamei de "CONFIGURAR DIRETÓRIOS".

Este botão foi criado utilizando "Inserir formas" do menu de ilustrações do Excel mesmo, mas nada impede ser criado um botão no formato "Active X".

Ao clicar neste botão, abre-se um formulario (frmDIR) criado dentro do VBA.

Neste formulário tem quatro botões:

 

Um ícone que ao clicar abre o formulário para o usuário localizar a pasta onde será salva o arquivo.

             Private Sub CommandButton1_Click()
                    Me.txtPDF = SelectFolder
             End Sub

 

Uma TexBox onde é inserido o endereço propriamente dito.

 

Um botão salvar:

Private Sub cmdINSERIR_Click()
    With Me
        If .txtPDF = "" Then
            MsgBox "Informe o diretório p/ salvar arquivos PDF.", vbExclamation, "Advertência"
            .txtPDF.SetFocus
                Exit Sub
        End If
        Call Configurar_Sistema
        With Sheets("MENU PRINCIPAL")
            .Unprotect (SENHA)
            Range("cel_dir_pdf").Value = Me.txtPDF
            .Protect (SENHA)
        End With
        resposta = True
        ActiveWorkbook.Save
        MsgBox "Diretório confirmado com sucesso.", vbInformation, "Informação"
        Unload Me
    End With
End Sub

e um botão sair:

Private Sub cmdSAIR_Click()
    Unload Me
End Sub

 

 

 

 

Bom...

Dentro do meu código, tenho um COMMANDBUTTON que executa uma macro que oculta linhas não utilizadas e logo em seguida, já salva o arquivo com alguns padrões que já foram definidos, dentre eles, o endereço que foi escolhido pelo usuário no código acima, onde deverá ser salvo o arquivo pdf quando gerado ao acionar a macro.

O código desse comando é:

Private Sub OcultarLinhasBC_Click()
    OcultarLinhasBC.BackColor = &H0&
        Application.ScreenUpdating = False
    For Each xRg In Range("O8:O152")
        If xRg.Value = "" Then
            xRg.EntireRow.Hidden = True
        End If
Next xRg
    LimparDadosReativarLinhas.Enabled = True
    OcultarLinhasBC.Enabled = False
    
Selection.End(xlDown).Select
    ActiveWindow.SmallScroll Down:=-102
    ChDir _
        '"C:\aqui deve aparecer o endereço do diretório que o usuário escolheu quando iniciou a planilha\"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\aqui deve aparecer o endereço do diretório que o usuário escolheu quando iniciou a planilha\" & Range("B158") & "_" & Format(Now, "yyyymmdd_hhmmss") _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True
    ActiveWindow.SmallScroll Down:=-24
    Range("I8").Select
End Sub

 

 

 

Tudo que eu preciso, é permitir que o usuário através do botão criado na tela principal da planilha, possa configurar o diretório onde deverá ser saldo o PDF, sem ter acesso ao código vba.

Ou seja, o usuário entra na planilha e clica no botão "CONFIGURAR DIRETÓRIO", localiza a pasta onde é para salvar o arquivo e confirma.

Quando for executada a função da macro DENTRO DA PLANILHA, ela automaticamente salvará no local onde o usuário direcionou no início.

 

Se alguém puder me ajudar, ficarei extremamente grato.
 

Observação:

Os códigos estão criados, mas não estou conseguindo fazer com que eles se comuniquem sem interferências.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...

Aprenda_a_Ler_Resistores_e_Capacitores-capa-3d-newsletter.jpg

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!