Definición de un rango de celdas DINÁMICO.

Mediante el código que insertaré al final hago que al recibir el foco un control, básicamente, se ejecute una macro que se trae a él el valor que se encuentra en determinado rango de determinada hoja -la hoja de índice (7) del libro.

El problema que quisiera resolver en el aplicativo es que el rango sobre el que operara la VLookup no sea algo estático -en el código está definido como B2:F3- sino DINÁMICO, y ello a partir de la celda B2, supongo que la solución pasa por la propiedad "CurrentRegion", pero no doy con la sintaxis correcta -en el código que inserto incluyo, comentados, dos intentos en la línea que apunto-.

Este es el código que empleo:

Private Sub Nombre_Usuario_Enter()
Dim Rango As Range
Dim NombreUsuario As String
On Error GoTo ControlErrores
Set Rango = Sheets(7).Range("B2:F3")
'''Set Rango = Sheets(7).Range("B2").CurrentRegion.Select
'''Set Rango = Sheets(7).Range("B2").CurrentRegion
NombreUsuario = Application.WorksheetFunction.VLookup(Me.USUARIO.Value, Rango, 2, 0)
Me.Nombre_Usuario.Value = NombreUsuario
Exit Sub
ControlErrores:
Me.Nombre_Usuario = "USUARIO NO REGISTRADO."
End Sub

1 respuesta

Respuesta
1

Visita:

Cursos de Excel y Macros - YouTube


No entiendo muy bien cómo están tus controles.

Pero si pones el USUARIO como un ComboBox y el Nombre_Usuario como un TextBox:


Reemplaza todo tu código por lo siguiente:

Option Explicit
'
Private Sub USUARIO_Change()
  Dim rango As Range, f As Range
  '
  Nombre_Usuario = ""
  Set rango = Sheets(7).Range("B2", Sheets(7).Range("B" & Rows.Count).End(3))
  Set f = rango.Find(USUARIO.Value, , xlValues, xlWhole)
  '
  If Not f Is Nothing Then
    Nombre_Usuario.Value = f.Offset(0, 1)
  End If
End Sub
'
Private Sub UserForm_Activate()
  USUARIO.List = Sheets(7).Range("B2", Sheets(7).Range("B" & Rows.Count).End(3)).Value
End Sub

El código anterior carga los usuarios en el combo.

Cuando seleccionas un usuario en el combo, en automático llena el textbox del nombre_usuario.


Veo que te gusta aprender a programar en VBA, tal vez te interese:

Declarar variables en vba excel. Curso de macros. - YouTube

Ahí explico cómo utilizar el método FIND.

Y También:

Consejos para desarrollar macros . curso de excel, curso de macros, excel, macros - YouTube


Sal u dos. Dante Amor

EXTRAORDINARIO, DANTE ¡Gracias!

Te has adelantado a mi pensamiento. Actualmente los controles "Usuario" y "Nombre_Usuario" eran sendos TextBoxes, aunque para el primero pensaba que debía ser un ComboBox; elegí que fuera un TexBox porque creí que con su elección se me haría más fácil el camino que con el ComboBox... pero no conocía 'tu' método Find  : -O 

Genial!! Voy a tratar de destripar el descubrimiento que me has hecho con tus vídeos.

Gracias una vez más!!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas