Página 1 de 1

Dúvida com programação de botões e macros

Enviado: 26 Jul 2021 às 12:50
por Sullivan2021
Tudo beleza pessoal?

Estou com uma dúvida referente à programação de macros e vou tentar explicar para vocês – vai ser um texto meio extenso.
Eu tenho essas três figuras pretas, na qual pretendo adicionar macros gravadas dentro delas, ou seja, essas figuras pretas serão botões:

Imagem

Agora vou explicar o botão configuração 1. Quando eu clicar no botão configuração 1, ele escreverá o nome de três macros já feitas em determinadas células - que estarão ocultas depois que a planilha inteira estiver pronta - e executará logo em seguida a macro_que_copia_e_cola_nos_botoes:

Imagem

A macro_que_copia_e_cola_nos_botoes copiará o nome das macros que o botão Configuração 1 escreveu e colará dentro dos botões pretos – em atribuir macro quando clicado com o botão direito nos botões pretos - localizados nas células C5; E5 e G5. Assim:
    A macroA é uma macro que escreve “A” dentro da célula C5 e será adicionada dentro do botão que se encontra na célula C5;
      A macroB é uma macro que escreve “B” dentro da célula E5 e será adicionada dentro do botão que se encontra na célula E5;
        A macroC é uma macro que escreve “C” dentro da célula G5 e será adicionada dentro do botão que se encontra na célula G5;

        Dessa forma, basta eu clicar no botão Configuração 1 que as minhas figuras pretas estarão com macros dentro delas, se transformando assim em botões:

        Imagem

        Até então, a minha macro funcionou perfeitamente, como era para ser executada.

        O problema acontece quando eu aperto o botão Configuração 2. Esse botão Configuração 2, escreverá no mesmo campo onde foi escrito a macroA; macroB e macroC outros nomes de macros e executará a macro_que_copia_e_cola_nos_botoes:

        Imagem

        Porém, quando eu clico em qualquer um dos botões pretos, que é pra escrever as letras D, E e F; eles escreverão a letra A, B e C.

        Isso acontece, pois quando foi gravada a macro_que_copia_e_cola_nos_botoes, ela copiou o nome macroA, macroB e macroC ao invés DO CONTEÚDO de dentro da célula.

        Eu queria saber se vocês sabem programar a macro_que_copia_e_cola_nos_botoes de forma que ela copia o conteúdo que estará dentro das células, adicionando-os dentro dos botões pretos, pois, não importará o nome da macro que eu colocar ali, ela estará adicionando nos botões pretos, desde que seja uma macro já existente.

        Isso precisa ser executado dessa forma, pois toda a planilha que eu fiz é com base nesse “jogo” de clicar nos botões configuração 1 e configuração 2 e eles mudarem as macros dos botões pretos, mediante a macro_que_copia_e_cola_nos_botoes.

        PS.: eu também preciso que a macro_que_copia_e_cola_nos_botoes copie o nome das macros não com base na posição das células que elas ocupam (C8, E8 e G8), mas sim, com base na distância que essas células estão da célula macro_que_copia_e_cola_nos_botoes. Isso fará com que uma única referência (célula I8) seja usada para calcular a distância de onde ela deve selecionar e copiar e eu terei um código de macro “genérico”, bastando mudar a referência de onde ele deverá copiar (ou seja, a célula I8), pois pretendo criar vários desses botões macro_que_copia_e_cola_nos_botoes em diferentes regiões da planilha que estou trabalhando, sempre colando independente de onde estiver escrito o nome das macros nos botões pretos.

        Muito obrigado se vocês leram o texto até fim, ficou bem extenso mas quis explicar detalhadamente com imagens para a melhor compreensão. Se vocês tiverem qualquer dúvida, irei responder prontamente!

        Re: Dúvida com programação de botões e macros

        Enviado: 26 Jul 2021 às 14:36
        por osvaldomp
        Sullivan2021 escreveu: 26 Jul 2021 às 12:50 Eu queria saber se vocês sabem programar ... de forma que ... o conteúdo que estará dentro das células, adicionando-os dentro dos botões ...
        Olá, @Sullivan2021 .
        Eu não sei como colocar uma macro dentro de um botão, agora se você quiser atribuir uma macro a um botão, então veja se aproveita o código abaixo.
        Código: Selecionar todos
        Sub AtribuiMacroAoBotão()
         ActiveSheet.Shapes("Botão 1").OnAction = Range("C8").Value
        End Sub
        
        #
        Esse código irá atribuir ao Botão 1 a macro cujo nome esteja em C8.

        Quanto à segunda demanda (PS.: eu também preciso ...) eu não entendi o que você quer.

        Re: Dúvida com programação de botões e macros

        Enviado: 26 Jul 2021 às 19:55
        por Sullivan2021
        Obrigado pela resposta e pela atenção @osvaldomp funcionou perfeitamente!
        Quanto a segunda dúvida, eu queria encontrar uma forma de copiar o conteúdo da célula C8 até G8, sem necessariamente escrever (C8:G8) no código da macro; pois quero criar um código que entenda que deve copiar somente a partir da célula C8.
        Então seria algo mais ou menos “copiar 4 células à direita a partir de C8” sem especificar essas células, a única referência é a célula C8. Dessa forma, vai ficar muito mais fácil se eu tiver que executar o mesmo código numa outra parte da planilha e precisar alterar. Digamos que eu queira que o código seja executado na célula H8, bastaria eu abrir o editor da macro e mudar de C8 para H8 sem ter que mudar todas as células que é pra copiar e colar, uma vez que o código entenderia que a partir da célula H8 ele precisa copiar mais 4 células à direita. Facilitaria muito o trabalho de ficar mudando célula por célula na mão no código caso quisesse executar numa outra região da planilha e não correria o risco de errar alguma coisa.
        Ainda, seguindo essa mesma linha de raciocínio, teria também como fazer o código entender que é para copiar "a 5ª célula a direita de C8"? Nesse caso, ele não copiaria tudo o que está a direita de C8, mas a quinta célula à direita de C8

        Re: Dúvida com programação de botões e macros

        Enviado: 26 Jul 2021 às 21:25
        por osvaldomp
        Agora entendi. Seguem alguns exemplos.

        Loop de C8 até F8
        Código: Selecionar todos
        Sub Loop4DireitaDeC8()
         Dim c As Range
          For Each c In Range("C8").Resize(, 4)
           MsgBox c.Address(0, 0) & vbLf & c.Value
          Next c
        End Sub
        #
        Loop à direita em 4 células a partir da célula selecionada; então para fazer o Loop, por exemplo, em C8:F8 selecione C8 e rode o código.
        Código: Selecionar todos
        Sub Loop4DireitaSeleção()
         Dim c As Range
          For Each c In Selection.Resize(, 4)
           MsgBox c.Address(0, 0) & vbLf & c.Value
          Next c
        End Sub
        #
        Indica endereço e conteúdo da quinta célula à direita de C8, ou seja, de H8.
        Código: Selecionar todos
        Sub QuintaDireitaC8()
         MsgBox Range("C8").Offset(, 5).Address(0, 0) & vbLf & Range("C8").Offset(, 5).Value
        End Sub
        #
        Indica endereço e conteúdo da quinta célula à direita da célula selecionada.
        Código: Selecionar todos
        Sub QuintaDireitaSeleção()
         MsgBox Selection.Offset(, 5).Address(0, 0) & vbLf & Selection.Offset(, 5).Value
        End Sub
        #
        Loop à direita em 4 células a partir da célula indicada em A1; então para fazer o Loop em C8:F8, por exemplo, coloque em A1 ~~~> C8.
        Código: Selecionar todos
        Sub Loop4DireitaConformeA1()
         Dim c As Range
          For Each c In Range(Range("A1").Value).Resize(, 4)
           MsgBox c.Address(0, 0) & vbLf & c.Value
          Next c
        End Sub

        Re: Dúvida com programação de botões e macros

        Enviado: 27 Jul 2021 às 10:17
        por JCabral
        Boa tarde Osvaldo

        Mais uma vez top essa explicação, mas na Sub Loop4DireitaConformeA1, está dar-me erro..."Run-time error '1004': Method 'Range' of object '_Global' failed".

        O que estarei a fazer de errado?

        Re: Dúvida com programação de botões e macros

        Enviado: 27 Jul 2021 às 11:23
        por osvaldomp
        Salve, Jorge.

        Segue um arquivo com o código instalado.

        Re: Dúvida com programação de botões e macros

        Enviado: 27 Jul 2021 às 11:47
        por JCabral
        Obrigado, tinha entendido mal.
        Perfeito

        Re: Dúvida com programação de botões e macros

        Enviado: 27 Jul 2021 às 18:39
        por Sullivan2021
        Muito obrigado pelos códigos e pela atenção @osvaldomp, você sempre responde as minhas perguntas e sempre aprendo uma coisa nova, show demais!!