Referencia a una hoja

Hola:
Necesito en un procedimiento hacer continuamenre referencia al mismo rango de celdas de entre varias hojas (dependiendo de lo que haya seleccionado en un cuadro combinado). Este cuadro combinado tiene 4 opciones .Para ello he utilizado definido una variable con la función choose para que me devuelva un rango de celdas de la hoja seleccionada de las 4 posibles. De esa manera haciendo referencia a esa variable me evito tener que escribir "choose(...) cada vez. Pero no me funciona. ¿Qué hago mal?
Sub primeraocupacion()
Dim f As Variant
Dim b As Variant
Dim fecha_in As Variant
Dim inmueble As String
Dim h As Variant
inmueble = Range("RESUMEN!f4")
h = Choose(inmueble, "Sheets(4).Range("b3:b45")", "Sheets(5).Range("b3:b45")", "Sheets(6).Range("b3:b45")", "Sheets(7).Range("b3:b45"))
fecha_in = CLng(Range("resumen!f6").Value)
f = Application.match(fecha_in, h, 1)
MsgBox f
b = h.Range("b" & f + 2).Value
MsgBox b
End Sub
Gracias

1 Respuesta

Respuesta
1
Disculpas por la demora; pero obviamente no pude probarlo; no pude localizar la instrucción Match; que pasa si en lugar de asignar a la variable h con el choose, no haces el choose en la asignación de la variable f (que supongo que es donde da el error)
Hola
Lo que quiero es que a través del choose me devuelva un rango de celdas (el mismo de entre varias hojas) y que cuando haga referencia a ese rango me funcione como tal. El problema está en que parece ser que no lo trata como rango
Seguramente te lo está tomando como texto y no te lo reconoce; un poco por eso es lo que yo te decía; no puedes hacer algo como
inmueble = Range("RESUMEN!f4")
Select Case inmueble
case 1
f = Application.match(fecha_in, Sheets(4).Range("b3:b45"), 1)
case 2
f = Application.match(fecha_in, Sheets(5).Range("b3:b45"), 1)
...
End Select
...
La solución que me das es la que provisionalmente había eleido, pero como te dije, en otros código tengo que hacer referencia a ese rango elegido y esta solución aunque funcione, no es muy "ortodoxa" y alarga mucho el código
Revísate la ayuda de la instrucción Evaluate que creo que va a hacer lo que buscas, te debería quedar algo como
h = Choose(inmueble, Evaluate("Sheets(4).Range("b3:b45")"), Evaluate("Sheets(5).Range("b3:b45")"), Evaluate("Sheets(6).Range("b3:b45")"), Evaluate("Sheets(7).Range("b3:b45")))
Pero te repito que veas la ayuda para aclararlo un poco más

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas