Obtener datos en userform, según celda

Tengo una lista de nombres de estudiantes ubicados en estos rangos: "D11, D14, D17, D20, D23, D26, D29, D32, D35, D38, D41, D44, D47, D50, D53, D56, D59, D62, D65, D68, D71, D74, D77, D80, D83, D83, D86, D89, D92, D95, D98, D101, D104, D107, D110, D113, D116, D119, D122, D125, D128, D131, D134, D137, D140, D143", la idea es que al darle doble click se abra un userform mostrando datos relevantes de los mismo.

Con esta formula abre el userform al darle doble click en los rangos establecidos.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Set Activador1 = Range("D11,D14,D17,D20,D23,D26,D29,D32,D35,D38,D41,D44,D47,D50,D53,D56,D59,D62,D65,D68,D71,D74,D77,D80,D83,D83,D86,D89,D92,D95,D98,D101,D104,D107,D110,D113,D116,D119,D122,D125,D128,D131,D134,D137,D140,D143")
If Not Intersect(Target, Activador1) Is Nothing Then
datos.Show
End If

End Sub

datos.show

textbox3,4,5,6,7

los datos los tengo en una hoja llamada "db".

La idea es poder tener solo un userform, que al darle doble click se abra y muestre los datos del estudiante al que le di doble click en su nombre.

Muchas gracias a todos, poco a poco voy entendiendo todos los pasos y procedimientos que utilizan para lograr lo que se necesita.

1 Respuesta

Respuesta
2
Set Activador1 = Range("D11,D14,D17,D20,D23,D26,D29,D32,D35,D38,D41,D44,D47,D50,D53,D56,D59,D62,D65,D68,D71,D74,D77,D80,D83,D83,D86,D89,D92,D95,D98,D101,D104,D107,D110,D113,D116,D119,D122,D125,D128,D131,D134,D137,D140,D143")

Para simplificar esa parte, utiliza lo siguiente:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim Activador1 As Range
  Cancel = True
  Set Activador1 = Range("D11:D" & Rows.Count)
  If Not Intersect(Target, Activador1) Is Nothing Then
    If Target.Row Mod 3 = 2 And Target.Value <> "" Then
      datos.Show
    End If
  End If
End Sub

Con la instrucción Target.Row Mod 3 = 2 identifica cada 3 líneas cuáles son iguales a "2", si es así entonces entra al proceso. Cualquier otra línea de la columna D, no es aceptada.

---

En el userform pon el siguiente código.

Deberás actualizarlo, porque no sé cuál textbox corresponde a cuál columna de la hoja "db":

Private Sub UserForm_Activate()
  Dim f As Range
  Dim sh As Worksheet
  Set sh = Sheets("db")
  Set f = sh.Range("B:B").Find(ActiveCell.Value, , xlValues, xlWhole, , , False)
  If Not f Is Nothing Then
    TextBox3.Value = sh.Range("D" & f.Row).Value  'rango
    TextBox4.Value = sh.Range("A" & f.Row).Value  'posisicion
    TextBox5.Value = sh.Range("F" & f.Row).Value  'asis
    'TextBox6.Value = sh.Range("" & f.Row).Value  'porcentaje (columna no identificada)
    TextBox7.Value = sh.Range("C" & f.Row).Value  'faltas
  End If
End Sub

Comenta cualquier duda.

¡Gracias!, vaya que interesante,  pensaba que era necesario una comparación, entre celdas de la lista de estudiantes y la de la hoja bd, pero claro era mucho mejor una búsqueda en "Bd" con el valor de la celda activa, tengo muchísimo que aprender aún 😆. 

Muchas gracias Dante Amor. 

[No olvides  la respuesta...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas