Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por NunoGuimaraes
#67473
Olá a todos ! Descobri apenas hoje este fórum mas parece que serei cliente assíduo. Tenho admiração por quem domina este poderoso programa. Desta forma, quero aumentar os meus básicos conhecimentos sobre ele. Grato a todos os que me possam ajudar!

De momento a minha dúvida é a seguinte: é possível criar um botão que ao clicar apareça um determinado texto numa célula ? E com uma lista pendente é possível?
Se sim, como posso fazê-lo?
Agradeço desde já a atenção que possam dispensar.
um abraço.
Por osvaldomp
#67486
Olá, @NunoGuimaraes .

Primeira questão: para inserir conteúdo em uma célula grave uma macro enquanto faz a operação manualmente, coloque um botão na planilha e vincule-o à macro gravada.

Segunda questão: por "lista pendente" você se refere a aplicar Validação de Dados em uma célula, é isso ?
Se sim, grave outra macro, coloque um segundo botão, ...

Depois publique aqui no fórum os códigos gravados se precisar de algum ajuste.
Por NunoGuimaraes
#67488
Olá @osvaldomp
Antes de tudo, agradecer a disponibilidade para ajudar.
Ainda sou muito básico no Excel e nunca trabalhei com macros, mas vou procurar algum vídeo onde possa visualizar o modo de as fazer.
Utilizando botões ou lista pendente a ideia era fazer algo do género desta página.
http://www.papelada.net/AGA.htm
Cumprimentos
Por osvaldomp
#67489
NunoGuimaraes escreveu: 14 Out 2021 às 20:19
... mas vou procurar algum vídeo onde possa visualizar o modo de as fazer.
Vale a pena conhecer esse recurso.
Veja no link abaixo algumas fontes retornadas pelo Sábio Google sobre o tema ~~~> excel gravar macros.

https://www.google.com.br/search?q=exce ... nt=gws-wiz

Utilizando botões ou lista pendente a ideia era fazer algo do género desta página.
Se possível coloque aqui o link para essa página de onde você copiou a imagem.
Por osvaldomp
#67509
Olá, @NunoGuimaraes .

Tomei como base a ferramenta do link que você enviou e fiz uma adaptação para o Excel em que utilizei Validação de Dados e macro.
Segue anexado o arquivo Excel.
Veja se aproveita para a sua necessidade. Retorne se precisar de alterações/ajustes.
Você não está autorizado a ver ou baixar esse anexo.
NunoGuimaraes agradeceu por isso
Por NunoGuimaraes
#67525
Olá @osvaldomp !
Muito obrigado pelo trabalho desenvolvido para me ajudar. Está muito próximo do pretendido, contudo falta uma parte do que acontece no link. Ao selecionar uma opção de cada linha, essa opção não podem aparecer as opções escolhidas todas juntas numa mesma célula , criando uma espécie de texto?
Agradeço a atenção.
cumprimentos
Por osvaldomp
#67549
Olá, @NunoGuimaraes .

Veja se a solução que está no arquivo anexado se aproxima mais do resultado desejado.
Você não está autorizado a ver ou baixar esse anexo.
Por NunoGuimaraes
#67552
É isso mesmo @osvaldomp ! Obrigado! É bom encontrar pessoas assim, dispostas a ajudar os outros. Um grande bem haja!

Não querendo abusar queria pedir mais uma ajuda. Estou a trabalhar noutra planilha(em anexo), só que há um pormenor que não estou a conseguir fazer. A base é mais ou menos a que me fez com listas suspensas soque desta feita com botões. A ideia é selecionar uma opção da linha 8 (C,D, E, F ou G), outra da linha 10 (C,D, E, F ou G) e outra da linha 12 (C,D, E, F ou G) e todas aparecerem no retângulo do lado direito. No entanto, sempre que seleciono uma opção a outra desaparece. Como faço para conseguir colocar as três opções no retângulo? Será que me pode explicar

Uma vez mais agradeço a disponibilidade e boa vontade.
Cumprimentos
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#67553
Olá, @NunoGuimaraes .

Fiz as alterações no arquivo anexo. Veja se atende.
Você não está autorizado a ver ou baixar esse anexo.
NunoGuimaraes, JCabral agradeceu por isso
Por NunoGuimaraes
#67554
Olá @osvaldomp
Muito obrigado.
Não entendi como fez, mas o resultado é mesmo esse. É difícil explicar qual a ordem que é dada para que o texto apareça seguido e não seja substituído?
Cumprimentos
Por osvaldomp
#67555
Olá, @NunoGuimaraes .

No seu arquivo original havia um código para cada um dos 15 shapes, ou seja, havia 15 códigos.
Eu elaborei um único código que faz o trabalho todo, LançaAvaliação no Módulo2 e atribuí todos os 15 shapes a esse código único.

Considerei qua as avaliações serão inseridas nesta ordem: primeiro as que estão na linha 8, depois linhas 10 e 12. Como as avaliações são inseridas ao clicar no shape localizado na linha logo abaixo da linha que contém a avaliação, então o primeiro comando do código verifica se o shape clicado está na linha 9. Se sim, o código lança em I4 a avaliação correspondente ao shape clicado, e essa avaliação será a única presente em I4 independente do que havia naquela célula.
If ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row = 9 Then ~~~> verifica se o shape clicado está na linha 9
Range(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address).Offset(-1).Copy [I4:O8] ~~~> substitui o conteúdo de I4 pela avaliação correspondente ao shape clicado.

Já para os shapes localizados nas demais linhas, 11 e 13, em lugar de substituir o conteúdo de I4, o código irá concatenar o conteúdo atual com o texto da avaliação que corresponde ao shape clicado.
[I4] = [I4] & " " & Range(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address).Offset(-1) ~~~> concatena em I4 o conteúdo já existente em I4 & 1 espaço & o texto da avaliação escolhida ao clicar em um dos shapes ou da linha 11 ou da linha 13.
NunoGuimaraes agradeceu por isso
Por NunoGuimaraes
#67557
Quem sabe, sabe…
Um código em vez de quinze! :lol: 🔝É muito domínio desta poderosa ferramenta. Sou muito básico ainda. :cry:
Então quer dizer que como estava não dava para fazer, é isso? Ou dava para fazer mesmo tendo os 15 códigos?
A explicação está ótima mas creio que ainda não era capaz de fazer isso sozinho. Tenho muito para aprender e quero fazer isso. Adoro o Excel, faz tudo
De qualquer forma, agradeço a imensa disponibilidade e paciência para me ajudar. O mundo 🌎 precisa de mais pessoas assim.
Um abraço
osvaldomp agradeceu por isso
Por osvaldomp
#67558
NunoGuimaraes escreveu: 18 Out 2021 às 09:37 Então quer dizer que como estava não dava para fazer, é isso? Ou dava para fazer mesmo tendo os 15 códigos?
Sim, é possível fazer nos seus códigos originais.

1. os códigos que correspondem aos shapes da linha 9 não precisariam ser ajustados, mas podem ser melhorados excluindo-se o comando Select (não recomendável o seu uso), assim, por exemplo na Sub copiaratividadefisica_1(), no lugar de:
Range("C8").Select
Selection.Copy
Range("I4:O8").Select
ActiveSheet.Paste


coloque ~~~> Range("C8").Copy Range("I4:O8")

_____________________________________________________________________________________________________

2. já nos códigos referentes aos shapes das linhas 11 e 13 (são 10 shapes), precisam de alteração, por exemplo na Sub copiaraptdaofisica_1(), no lugar de:
Range("C10").Select
Selection.Copy
Range("I4:O8").Select
ActiveSheet.Paste


coloque esta concatenação ~~~> Range("I4") = Range("I4") & " " & Range("C10")
NunoGuimaraes agradeceu por isso
Por NunoGuimaraes
#67689
@osvaldomp Não querendo abusar da boa vontade ;)
Há algum código que possa utilizar para proteger a planilha e as macros continuarem a funcionar?
Obrigado!
Por osvaldomp
#67783
Olá, @NunoGuimaraes .

Experimente:
Código: Selecionar todos
Sub Teste()
 ActiveSheet.Unprotect "coloque aqui a sua senha"

' coloque o seu código aqui

 ActiveSheet.Protect "coloque aqui a sua senha"
End Sub
Por NunoGuimaraes
#67791
Obrigado.
Dá erro.(ver imagem em anexo)
Cumprimentos
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#67795
Olá, @NunoGuimaraes .

Disponibilize um amostra do seu arquivo com o código que está provocando o erro, pois só a imagem com a mensagem de erro não ajuda.
Mesclar no VBA

@osvaldomp Sim eu lembro, instalei os dois e […]

Pessoal, boa tarde! Antes de postar aqui tentei d[…]

Boa Tarde! Se Possível, Em funç&atil[…]

Show de bola, você foi em cima do problema, […]

Dida, Bom Dia. Detalhe no anexo Confere se &eacu[…]

Tente colocar TRUE() na SWITC ...SWITCH ( TRUE(),[…]

Olá, @felipefaccini . Grato pelo retor[…]

[RESOLVIDO]VBA Crashando

Olá, @PedroRamirez . Ao abrir o seu […]