none
Exemplo para gabarito - VBA RRS feed

  • 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 :)

    quinta-feira, 20 de fevereiro de 2014 22:04

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

    domingo, 23 de fevereiro de 2014 16:07
    Moderador

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

    quinta-feira, 20 de fevereiro de 2014 23:31
  • 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

    domingo, 23 de fevereiro de 2014 16:07
    Moderador