Um macro para várias Caixas de Seleção

Visual Basic for Aplication e macros no Excel.
Regras do fórum
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde. Imagem

Um macro para várias Caixas de Seleção

Mensagempor Silvapn » Sex Jan 17, 2020 6:57 pm

Olá galera.

Estou montando uma planilha para nota de alunos e desejo inserir um campo com a opção de marcar o aluno que está inativo. Para isso desejo usar uma caixa de seleção que, ao ser clicada, deixa a linha com as informações do aluno preta.
Consegui fazer e está tudo funcionando bem, porém devo fazer isto em 50 linhas.
Tem alguma forma de resolver isto sem ter que criar 50 macros (um para cada linha)?

O código da macro é este:
Código: Selecionar todos
Sub Aluno1()

    Dim Msg, Style, Title, Response, MyString
    Dim box As CheckBox, m As Variant
    Msg = "Confirma o aluno " + Range("B8").Value + " como INATIVO?" ' Define a mensagem.
    Style = vbYesNo + vbCritical + vbDefaultButton2 ' Define o botão NÃO como padrão.
    Title = "Aluno Inativo" ' Define o título.
    Response = MsgBox(Msg, Style, Title)
    If Response = vbYes Then ' O usuário escolheu Sim.
        Range("E8:AM8").Select
        Range("E8").Activate
        With Selection
            .Interior.Color = vbBlack
        End With
        Range("B8").Select
        Range("B8").Activate
        ActiveCell.Font.Strikethrough = True
        ActiveSheet.CheckBoxes("Caixa de seleção 11").Value = xlOn
        Range("D8") = "INATIVO"
        Range("B8").Select
    Else ' O usuário escolheu Não.
       Range("E8:AM8").Select
        Range("E8").Activate
        With Selection
            .Interior.Color = xlColorIndexNone
        End With
        Range("H8").Interior.ColorIndex = 15
        Range("O8").Interior.ColorIndex = 15
        Range("V8").Interior.ColorIndex = 15
        Range("AC8").Interior.ColorIndex = 15
        Range("AH8").Interior.ColorIndex = 15
        Range("AI8").Interior.ColorIndex = 15
        Range("AJ8").Interior.ColorIndex = 15
        Range("AK8").Interior.ColorIndex = 15
        Range("AL8").Interior.ColorIndex = 15
        Range("B8").Select
        Range("B8").Activate
        ActiveCell.Font.Strikethrough = False
        Range("D8") = "ATIVO"
        ActiveSheet.CheckBoxes("Caixa de seleção 11").Value = xlOff
        Exit Sub
    End If
     
End Sub


O QUE EU PENSEI!!!

Usar um único macro que seria chamado por todas as caixas de seleção, porém com uma instrução inicial (que seria o número da linha). Tipo assim:
Código: Selecionar todos
Sub Aluno1(linha as String)

E este valor eu inseria por meio de variável em cada célula a ser utilizada na macro.

Porém esbarrei em um problema:
Como a caixa de seleção pode informar o valor desta instrução?

Será que isto é possível ou alguém tem uma outra solução?

Obs.: Não domino o VBA. Montei este código baseado em algumas páginas que ensinam VBA.
Silvapn
Membro
Membro
 
Mensagens: 1
Registrado em: Sex Jan 17, 2020 6:45 pm
Has thanked: 0 time
Have thanks: 0 time

{ SO_SELECT }

Re: Um macro para várias Caixas de Seleção

Mensagempor EdsonBR » Sex Jan 17, 2020 10:08 pm

Bem vindo, Silvapn!

Poste o modelo que vc já tem com alguns dados (descaracterize informações confidenciais antes) e também demonstre nele como vc quer que fique. Disponibilize numa nuvem qualquer (Sendspace, por exemplo) para facilitar o trabalho ;)
Imagem
Avatar do usuário
EdsonBR
Membro
Membro
 
Mensagens: 652
Registrado em: Qui Nov 05, 2015 11:43 pm
Localização: Joinville, SC
Has thanked: 139 times
Have thanks: 428 times


Voltar para VBA & Macros

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes