Todoexpertos.com
http://www.todoexpertos.com
La respuesta está en Internet
Información de la pregunta
Título: variable para matriz en VB
Experto: tavopz
Valoración: 5
Fecha: 15/07/2008


variable para matriz en VB
Hola, la pregunta es sobre VB. Tengo una celda en una hoja de Excel donde hay la dirección de una matriz ( por ejemplo: Hoja2!B10:C16 ) En una macro capturo el valor de esta celda dentro de una variable, que creo que lo puedo hacer así: ActiveCell = direccion Ahora necesito hacer un BuscarV ( en VB creo que seria vlookup ) con esta matriz, que siempre es distinta, usando la variable. Teneis idea como puedo hacerlo? Muchas gracias de antemano. P.D: he encontrado una pregunta/respuesta muy parecida, pero la variable se usa para el primer argumento de la función BuscarV, no para la mátriz http://www.todoexpertos.com/categorias/tecnologia-e-internet/software-y-aplicaciones/microsoft-excel/respuestas/452270/consulta-de-visual-basic-excel

variable para matriz en VB
Hola, Creo que es más fácil si tienes en una celda el nombre de la hoja y en otra el rango, lo puedes extraer incluso de la que tienes actualmente. De esta forma si tienes por ejemplo en la hoja activa en la celda D1 = Hoja2 y en la celda D2 = B10:C10 entonces podrías hacer algo como esto: [b]Dim r, s As String Dim r1 As Range s = Worksheets("Sheet1").Range("D1") r = Worksheets("Sheet1").Range("D2") Set r1 = Worksheets(s).Range(r) m = Application.WorksheetFunction.VLookup(dato, r1, 3, False)[/b] Espero que te sea de utilidad.   Saludos, Tavopz Visita: [url=http://www.colombia2011.org]www.colombia2011.org[/url]

variable para matriz en VB
Hola Tapopz, Muchas gracias por tu solución, me ha sido de gran ayuda. Me he deado cuenta, que tengo que trabajar con hojas que estan en otros archivos y no consigo añadir la instrucción que me hace falta... lo que yo he creado, que no funciona, es lo siguiente: [b]Dim r, s, [u]t[/u] As String Dim r1 As Range s = Worksheets("Sheet1").Range("D1") r = Worksheets("Sheet1").Range("D2") [/b] [b][u]t = Worksheets("Sheet1").Range("D3")[/u][/b] [u]   Que iria en la instrucción File ( que me la he inventado ) para que funiconara?   Muchas gracias!! [/u][b]Set r1 = [u]File(t).[/u]Worksheets(s).Range(r) m = Application.WorksheetFunction.VLookup(dato, r1, 3, False)[/b]  

variable para matriz en VB
Hola, En ese caso el dato del libro y hoja donde se encuentra el rango debe estar en el formato: [b]f = "[Archivo.xls]HojaX!"[/b] Quedaría entonces: [b]m = Application.WorksheetFunction.VLookup(dato, f & r1, 3, False) [/b] Saludos, Tavopz

variable para matriz en VB
Hola Tavopz, Lo siento pero ahora no te he seguido, Los datos que tengo: B2=[prova2.xls]Hoja2! (archivo donde tengo el rango) B3=Hoja2 (hoja donde tengo el rango) B4=$A$2:$B$5 (rango) B5=audi (dato) La macro: Dim archivo, hoja, rango, dato As String Dim r1 As Range archivo = Worksheets("Hoja1").Range("B2") hoja = Worksheets("Hoja1").Range("B3") rango = Worksheets("Hoja1").Range("B4") dato = Worksheets("Hoja1").Range("B5") Set r1 = Worksheets(hoja).Range(rango) m = Application.WorksheetFunction.VLookup(dato, archivo & r1, 2, False) Cells(6, 2) = m Con esto, se queda atascado en m = Application.... Por no coincidir los tipos Tienes idea de por què pasa? Muchas gracias!

variable para matriz en VB
Hola, Tienes razón, estuve investigando al respecto y encontré que no puedes hacer el vlookup si el archivo donde está el rango de búsqueda no se encuentra abierto (es decir, debes abrir el archivo antes de buscar en él).   Dado esto, no sé si esta sea la mejor alternativa, puedes usar algo como esto: [b]With Workbooks("Prova.xls").Sheets(2)    m = Application.WorksheetFunction.VLookup( dato, .Range(B4), 2, False)  End With[/b]   Espero que esto funcione. Si no, entonces te recomendaría que en lugar de hacer esto desde VBA, hagas la fórmula en una celda y desde el código VBA sólo tomes el valor del resultado de dicha celda. Sería mucho más fácil.   Saludos, Tavopz

Pregunta finalizada. Valoración: 5
Muchissimas gracias por tu ayuda. Fantástico!


Volver al mensaje
http://www.todoexpertos.com/categorias/tecnologia-e-internet/software-y-aplicaciones/microsoft-excel/respuestas/1878355/variable-para-matriz-en-vb