Leer nº en una celda y pasar datos de una bbdd a controles

Necesito ayuda para un juego que estoy creando de preguntas y respuestas.

He conseguido crear diez numeros aleatorios entre 1 y 49 (se puede cambiar a 100, 200 o el nº que sea) en un rango de la hoja BBDD.

Necesitaria que al leer el primero de esos diez numeros los controles del form muestren la preguntas y las 4 posibles respuestas. Y asi con el segundo, el tercero, ..., y el decimo nº.

Dejo un archivo con una imagen de la hoja, otra con el form y un txt.

GRACIAS

https://mega.nz/file/XFEWRB4Q#v7U10ta-WBsvT5PYq9kmXyT2vJx_-XDQjNdEdFvxYQY 

2 Respuestas

Respuesta
1

Creo que podrías resolver todo mediante el uso de la función buscarv. Podría ser algo como:

lb_pregunta.Caption = Application.WorksheetFunction.VLookup(Val(lb_numpre.Caption), _
 Sheets("BBDD").Range("$A$1:$G$100"), 2, 0)
opt_a.Caption = Application.WorksheetFunction.VLookup(Val(lb_numpre.Caption), _
 Sheets("BBDD").Range("$A$1:$G$100"), 3, 0)
opt_b.Caption = Application.WorksheetFunction.VLookup(Val(lb_numpre.Caption), _
 Sheets("BBDD").Range("$A$1:$G$100"), 4, 0)
opt_c.Caption = Application.WorkheetFunction.VLookup(Val(lb_numpre.Caption), _
 Sheets("BBDD").Range("$A$1:$G$100"), 5, 0)
opt_d.Caption = Application.WorksheetFunction.VLookup(Val(lb_numpre.Caption), _
Sheets("BBDD"). Range("$A$1:$G$100"), 6, 0)

Hay que confirmar el código ya que no lo he probado, pero debería ir por ese lado

Respuesta
1

Sustituye tu código del formulario frm_inicio por lo siguiente:

Private Sub cmb_siguiente_Click()
  Dim f As Range
  '
  With Hoja2
    .Range("K2").Value = .Range("K2").Value + 1
    lb_numpre.Caption = .Range("J" & .Range("K2").Value + 2).Value
    cmb_siguiente.Enabled = .Range("K2").Value <> 10
    Set f = .Range("A:A").Find(lb_numpre.Caption, , xlValues, xlWhole)
    If Not f Is Nothing Then
      lb_pregunta.Caption = Hoja2.Range("B" & f.Row).Value
      opt_a.Caption = Hoja2.Range("C" & f.Row).Value
      opt_b.Caption = Hoja2.Range("D" & f.Row).Value
      opt_c.Caption = Hoja2.Range("E" & f.Row).Value
      opt_d.Caption = Hoja2.Range("F" & f.Row).Value
    End If
  End With
End Sub
'
Private Sub UserForm_Initialize()
  Hoja2.Range("K2").Value = 0
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas