Atribuir código disparado a múltiplas imagens - Excel VBA [duplicado]

1

Eu queria atribuir algumas ações específicas ao clicar em uma das imagens que inseri na minha planilha do Excel. O problema é que eu tenho 52 imagens (cartas de poker para aqueles que se perguntam). Então, minha pergunta é, existe alguma maneira de evitar escrever código para 52 casos, e encontrar uma maneira como abaixo:

Private Sub Image(x)_Click()
   Call common_subroutine(x)
End Sub

, em vez de escrever a mesma coisa 52 vezes, uma para cada nome de imagem diferente? Como eu uso a mesma sub-rotina para fazer o trabalho com uma variável de acordo com o caso, a carga de trabalho não será tão grande se não houver como fazê-lo, mas certamente me incomoda se essa maneira obviamente tola é a única possível.

    
por Noob Doob 08.04.2014 / 23:27

3 respostas

0

Eu encontrei esse problema várias vezes durante a programação de formulários de usuário. Infelizmente, nunca encontrei uma maneira de contornar a criação de um acionador para cada objeto individualmente. No entanto, eu pensei em usar o Python para imprimir o código real que eu poderia colar no VBA userform. Não há necessidade de o número tedioso mudar dessa maneira. (Eu suponho que você poderia fazer isso no VBA também, mas boa sorte fazendo isso em uma linha.)

O loop de Python abaixo funcionaria para o exemplo que você postou.

for i in range(52):
    print "Private Sub Image%d_Click()\n\tCall common_subroutine(%d)\nEnd Sub\n" % (i + 1, i + 1)

Basta executar o prompt de comando e copiar a saída.

    
por 28.04.2014 / 19:21
1

Ok, estou um pouco confuso com o exemplo do VBA, mas a melhor maneira de fazer isso é selecionar todas as imagens, clique com o botão direito - atribuir macro.

Isso atribuirá a mesma macro a todas as fotos selecionadas.

    
por 09.04.2014 / 21:12
0

Sim. Dê a cada imagem o mesmo nome e um índice diferente. Agora você pode se referir a este objeto como uma coleção inteira e selecionar uma imagem por qualquer índice fornecido.

    
por 09.04.2014 / 00:01