Usuário com melhor resposta
Exemplo para gabarito - VBA

Pergunta
-
Bom dia Pessoal. O problema de hoje é o seguinte: Tenho um arquivo de excel com várias planilhas, cada qual com uma "Matéria" e dentro dela um gabarito de perguntas e respostas, no seguinte modelo:
01 02 03 04 05 06 (Aula) 1 a c a c a d 2 b d b c d d 3 b a c b d b 4 a a b c a d (Questão)
No arquivo, há uma sheet para cada gabarito de acordo com a matéria, todas neste formato. No primeiro listbox, eu escolho a sheet. No segundo eu escolho a aula (linhas) para depois escolher a questão (coluna) e retornar a resposta no caption de um label. Qual a maneira menos laborosa de se fazer isto? seria o caso de popular uma matriz com cada gabarito? se sim, como poderei acessar e atribuir um dado {(2,3) por exemplo, que daria neste caso resposta A}Não precisa mastigar o código para mim, preciso apenas de um "norte" dos Mestres, afinal eu tenho que me virar :)
Respostas
-
Sub pMain() Debug.Print pGetNota(1, 1) End Sub Private Function pGetNota(lngAula As Long, lngQuestão As Long) As String Dim ret As String Dim wkf As WorksheetFunction Set wkf = WorksheetFunction ret = wkf.Index(Range("B2:F5"), _ wkf.Match(lngAula, Rows(1), 0), _ wkf.Match(lngQuestão, Columns(1), 0)) pGetNota = ret End Function
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 17:08
Todas as Respostas
-
Segue amanha explico os cods...
Private Sub ComboBox1_Click() Dim ws As String ws = ComboBox1 coluna = 2 Do Until Sheets(ws).Cells(1, coluna) = "" ComboBox2.AddItem Sheets(ws).Cells(1, coluna) coluna = coluna + 1 Loop linha = 2 Do Until Sheets(ws).Cells(linha, 1) = "" ComboBox3.AddItem Sheets(ws).Cells(linha, 1) linha = linha + 1 Loop End Sub Private Sub ComboBox3_Change() ws = ComboBox1 Label1 = Sheets(ws).Cells(ComboBox2, ComboBox3) End Sub Private Sub UserForm_Initialize() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ComboBox1.AddItem ws.Name Next End Sub
-
Sub pMain() Debug.Print pGetNota(1, 1) End Sub Private Function pGetNota(lngAula As Long, lngQuestão As Long) As String Dim ret As String Dim wkf As WorksheetFunction Set wkf = WorksheetFunction ret = wkf.Index(Range("B2:F5"), _ wkf.Match(lngAula, Rows(1), 0), _ wkf.Match(lngQuestão, Columns(1), 0)) pGetNota = ret End Function
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 17:08