Saberexcel - o site das macros
Esta macro do Aplicativo Microsoft Excel VBA(Visual Basic Application), contém uma macro que gera uma pergunta aleatória faz um loop nas respostas e de forma aleatoria a resposta é direcionada para uma autoforma(Shapes). A busca é realizada em outra planilha (Banco de Dados).
O exemplo tem finalidade didática. (observe que a simetria no código facilita muito o entendimento)
Veja bem, no aprendizado VBA você tem por obrigação em aprender, o que são esses vocábulos e seus membros mais importantes.
CÓDIGOS ESTÃO NA PRIMEIRA LINHA DA MACRO
Set c = Sheets("BD").Range("A1").Offset(Int(Rnd() * [Questoes].Count + 1), 0)
'Set' , 'c' , 'Sheets', 'Range', 'OffSet', 'Int', 'Rnd','questoes-range dinamico nomeado','Count',. -
(viu que não é dificil) esses nomes são "Vocábulos do VB"
A | B | |
1 | VOCABULÁRIO | << S I G N I F I C A D O >> |
2 | Instrução Set | Atribui uma referência de objeto a uma variável ou propriedade |
3 | Variável c | Variáveis servem para armazenarmos dados e usarmos quando necessário |
4 | Objeto Range | Representa uma célula, uma linha, uma coluna, uma seleção de células contendo um ou mais blocos contíguos de células ou um intervalo 3D. |
5 | Propriedade Offset | Retorna um objeto Range, que representa um intervalo que é deslocado do intervalo especificado |
6 | Instrução Int | Função que retorna parte de um inteiro |
7 | Funçao Rnd | Função que retorna um Single que contém um número aleatório |
8 | Propriedade Count | Retorna um Long (número inteiro longo) que contém o número de objetos de uma coleção. |
9 | COMO SABER | Teclando F1 no VBE na palavra chave, abrirá o Help do item selecionado. |
Sub Gera_questao_resposta_aleatoria()
Set c = Sheets("BD").Range("A1").Offset(Int(Rnd() * [Questoes].Count + 1), 0)
Saber1.Shapes("sb").Visible = False
Saber1.Shapes("sbm").Visible = False
Saber1.Shapes("sbm1").Visible = False
With Sheets("Questões")
[B5] = c
[C5] = c(1, 3)
[D5] = c(1, 4)
[E5] = c(1, 5)
[F5] = c(1, 6) 'código
'essa instrução With foi criada para retornar os valores no Shapes(Autoforma)'Saber'
With .Shapes("Saber")
.TextFrame.Characters.Text = c(1, 2)
.Visible = False
End With
End With
[F8].Select
End Sub
essa macro foi criada somente para tornar os shapes(autoformas) visíveis.
Sub ver()
Saber1.Shapes("Saber").Visible = True
Saber1.Shapes("sb").Visible = True
Saber1.Shapes("sbm").Visible = True
Saber1.Shapes("sbm1").Visible = True
End Sub
'caso queira programar pela folha de código da folha de planilha, bem simples olhe no projeto vba
'caso o usuário mude o nome da folha de planilha lá na aba das planilha, não ocorrerá o erro de
'localização do objeto Worksheet. Ok...
Sub Gera_questao_resposta_aleatoria_1()
Set c = Saber2.Range("A1").Offset(Int(Rnd() * [Questoes].Count + 1), 0)
With Saber1 'planilha Questões
[B5] = c
[C5] = c(1, 3)
[D5] = c(1, 4)
[E5] = c(1, 5)
[F5] = c(1, 6) 'código
'essa instrução With foi criada para retornar os valores no Shapes(Autoforma)'Saber'
With .Shapes("Saber")
.TextFrame.Characters.Text = c(1, 2)
.Visible = False
End With
End With
End Sub
Aprenda tudo sobre planilhas do Aplicativo Microsoft Excel VBA(Visual Basic Application), sozinho, com baixo custo, praticando com os produtos didáticos Saberexcel
baixe o exemplo de planilha contendo as macros acima.
Excel planilha vba perguntas e resposta retorna valor shapes (48.43 Kb)