combox vs buscarv

01/06/2007 - 16:26 por Edgar Gómez | Informe spam
Hola a todos, voy incursionando en esto de las macros, tengo nociones de
programacion, sin embargo tengo que leer un poco mas de la sintaxis del vb,
en fin mi pregunta situacion es la siguiente.

Estoy haciendo una hoja para cotizaciones, utilizando un combox para filtrar
la lista de productos, en otra hoja tengo la lista de productos y sus
precios, esta informacion esta guardada en un rango con el nombre de listmat,
como funciona?, cuando selecciono un material de la lista automaticamente en
la parte del precio me aparece la de la lista.

todo esto funciona correctamente cuando lo hago manualmente, inclusive
cuando grabo el macro, el detalle es cuando ejecuto el macro, ninguno de los
combox me despliega la lista de materiales del rango listmat.

que es lo que debo hacer?
para su conocimieto ya puse en la parte de cada combox

listfillrange: listmat
listfillrange: seleccione un celda "X" (la celda se cambia)
con el valor que me devuelve en la celda "X" ejecuto la siguiente formula
=buscarv(celda "X", listmat, 3, falso)

Gracias por tu ayuda

LEGS

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
02/06/2007 - 00:13 | Informe spam
hola, Edgar !

Estoy haciendo una hoja para cotizaciones, utilizando un combox para filtrar la lista de productos
en otra hoja tengo la lista de productos y sus precios... en un rango con el nombre de listmat ...
todo esto funciona correctamente cuando lo hago manualmente, inclusive cuando grabo el macro
el detalle es cuando ejecuto el macro, ninguno de los combox me despliega la lista de materiales del rango listmat.
que es lo que debo hacer?
para su conocimieto ya puse en la parte de cada combox
listfillrange: listmat
listfillrange: seleccione un celda "X" (la celda se cambia) con el valor que me devuelve en la celda "X"
ejecuto la siguiente formula =buscarv(celda "X", listmat, 3, falso)



1) por que mencionas dos veces lo referente al "listfillrange" ??
2) en donde, como y cuando es que "ejecutas" la formula buscarv(...) ?
3) en donde estan los combox que estas usando ?
incrustados en alguna hoja...
por medio de algun formulario de usuario (userform)
4) en cuantas filas/celdas necesitarias "combox" para seleccionar materiales ?
5) podrias exponer el codigo que mencionas ?
6) seria conveniente si *precisas* que significa o donde esta la *celda "X"*
7) cual es el rango [+/- exactamente] al que nombraste "listamat" ?

[probablemente] seria suficiente su usas *combos* del [menu] datos / validacion / lista
y aplicas la funcion =buscarv(...) donde debas rescatar los datos complementarios -?-

si expones datos... *hipoteticos/supuestos/imaginarios/estimados/...*
no esperes alguna propuesta... *concreta/acertada/infalible/definitiva/...* [al menos... *a la primera*] ;)

saludos,
hector.
Respuesta Responder a este mensaje
#2 Edgar Gómez
02/06/2007 - 17:13 | Informe spam
GRACIAS POR CONTESTAR HECTOR,

VOY A ENLISTAR TUS PREGUNTAS PARA RESPONDERTELAS

1) MENCIONE DOS VECES EL LISTFILLRANGE POR UN ERROR EN REALIDAD LA OTRA ES
LINKEDCELL A LA QUE LE DOY EL VALOR DE LA CELDA "X"

LO PONGO ASI
LINKEDCELL = E11
LISTFILLARANGE = listmat

2) LA EJECUTO EN LA CELDA D11, MANUALMENTE, PORQUE COMO YA LO DIJE TODO ESTO
LO HAGO GRABANDO EL MACRO

3) LOS COMBOX ESTAN EN LA MISMA HOJA DE HECHO LOS POSICIONO SOBRE Y APARTIR
DE LA CELDA E11

4) POR AHORITA LO ESTOY HACIENDO CON 21 CELDAS, EN REALIDAD LA IDEA ES
GENERAR UN INPUTBOX QUE ME PREGUNTE CUANTAS PARTIDAS VOY A COTIZAR Y APARTIR
DE ESTO PROGRAMAR UN BUCLE.

5) UNICAMENTE TE PONDIRIA LO QUE ME GENERA EL VB A PARTIR DE LA GRABACION,
QUEDA ASI:

ActiveCell.FormulaR1C1 = "1"
Range("E11:K11").Select
ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:5, Top:5.25, Width:@0.5, Height:= _
18).Select
Range("L11").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7], listmat, 3, FALSE)"
Range("B12:C12").Select
ActiveCell.FormulaR1C1 = "2"
Range("E12:K12").Select
ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:5, Top:4.75, Width:@0.5, Height:= _
18).Select
Range("L12").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7], listmat, 3, FALSE)"
Range("L12").Select

6) LA CELDA "X" ESTA EN LA CELDA DEBAJO DEL COMBOX PERO REALMENTE NO
CONSIDERO QUE ESTO AFECTE PORQUE YA LA CAMBIE DE LUGAR A OTRA COLUMNA Y ME
SIGUE DANDO EL MISMO RESULTADO, POR OTRO LADO , LA CELDA "X" SON LOS
CONSECUTIVOS DE LA COLUMNA O DONDE ESTAN COLOCADOS LOS COMBOS
E11, E12, E13..E32

7) EL RANGO ESTA EN LIBRO PERO EN OTRA HOJA SE LLAMA (PRECIOS) EN ESTA VIENE
LA DESCRIPCION DE MATERIALES Y LOS PRECIOS DE MTY - TAMPICO Y VA DE A2:C289

REALMETE NO SE USAR ESO ULTIMO QUE ME DIJISTE, COMO TE COMENTO ESTO JALA SI
LO DEJO HECHO A MANO, EL PROBLEMA ES CUANDO CORRO EL MACRO, INCLUSIVE EN EL
MISMO LIBRO DONDE ESTA TODO.

RECOMIENDAME QUE DEBO LEER PARA APRENDER UN POCO MAS DEL VISUAL BASIC, COMO
TE MENCIONE SE UN POCO DE LA LOGICA DE PROGRAMACION PERO ME FALTA PRACTICA,
ANTES PROGRAMABA EN BASIC Y PASCAL, PERO TIENE 10 AÑOS QUE NO LO HAGO Y ESTO
DE LOS MACROS Y LA PROGRAMACION VB ES DE GRAN AYUDA,

SALUDOS Y ESPERO TU RESPUESTA

Gracias por tu ayuda

LEGS


"Héctor Miguel" escribió:

hola, Edgar !

> Estoy haciendo una hoja para cotizaciones, utilizando un combox para filtrar la lista de productos
> en otra hoja tengo la lista de productos y sus precios... en un rango con el nombre de listmat ...
> todo esto funciona correctamente cuando lo hago manualmente, inclusive cuando grabo el macro
> el detalle es cuando ejecuto el macro, ninguno de los combox me despliega la lista de materiales del rango listmat.
> que es lo que debo hacer?
> para su conocimieto ya puse en la parte de cada combox
> listfillrange: listmat
> listfillrange: seleccione un celda "X" (la celda se cambia) con el valor que me devuelve en la celda "X"
> ejecuto la siguiente formula =buscarv(celda "X", listmat, 3, falso)

1) por que mencionas dos veces lo referente al "listfillrange" ??
2) en donde, como y cuando es que "ejecutas" la formula buscarv(...) ?
3) en donde estan los combox que estas usando ?
incrustados en alguna hoja...
por medio de algun formulario de usuario (userform)
4) en cuantas filas/celdas necesitarias "combox" para seleccionar materiales ?
5) podrias exponer el codigo que mencionas ?
6) seria conveniente si *precisas* que significa o donde esta la *celda "X"*
7) cual es el rango [+/- exactamente] al que nombraste "listamat" ?

[probablemente] seria suficiente su usas *combos* del [menu] datos / validacion / lista
y aplicas la funcion =buscarv(...) donde debas rescatar los datos complementarios -?-

si expones datos... *hipoteticos/supuestos/imaginarios/estimados/...*
no esperes alguna propuesta... *concreta/acertada/infalible/definitiva/...* [al menos... *a la primera*] ;)

saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
03/06/2007 - 01:17 | Informe spam
hola, Edgar !

con los nuevos datos que expones...
[y abrevio a solo los que considero 'pertinentes', ya que me has dejado verdaderamente 'aturdido' con tanto GRITO] :))

... LA CELDA "X" ... LO PONGO ASI ... LINKEDCELL = E11 [...]
... LO ESTOY HACIENDO CON 21 CELDAS [...]
... LO QUE ME GENERA EL VB A PARTIR DE LA GRABACION, QUEDA ASI:
...
Range("L11").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7], listmat, 3, FALSE)" [...]
Range("L12").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7], listmat, 3, FALSE)" [...]
...
... LA CELDA "X" SON... DONDE ESTAN COLOCADOS LOS COMBOS E11, E12, E13..E32
... EN OTRA HOJA... VIENE LA DESCRIPCION DE MATERIALES Y LOS PRECIOS DE MTY - TAMPICO Y VA DE A2:C289



1) dejame insistir en el siguiente punto de la propuesta anterior:
[probablemente] seria suficiente su usas *combos* del [menu] datos / validacion / lista
y aplicas la funcion =buscarv(...) donde debas rescatar los datos complementarios -?-





2) con lo anterior podrias ahorrarte codigos y la insercion de muchos/demsiados objetos [como los combox] +/- como sigue:

a) selecciona el rango donde necesitas los combox en 'su' hoja [que no se cual sea]... -> E11:E32 ???
-> ve a [menu] datos / validacion... / [configuracion] permitir -> lista y marca celda con lista desplegable
-> en el cuadro de edicion de referencias [origen] introduce la siguiente formula: -> =desref(listamat,,,,1)
-> termina/acepta/...

b) selecciona la celda donde la macro esta depositando la primer formula [L11 ?] y...
-> establecela directa/manual/mente... [p.e.] =si(e11="","",buscarv(e11,listamat,3,0))
-> copiala/arrastrala/... hasta su pareja de celdas en la columna 'E'... [hasta L32 ?]

hasta aqui... comentas *como vamos* ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Edgar Gómez
04/06/2007 - 18:33 | Informe spam
gracias miguel, acepta una disculpa, por mis gritos de hecho ese mismo dia me
entere que significaba el escribir con mayusculas en los foros.

Muchas gracias por tu tip, funciona perfectamente y me es funcional sin
embargo alenta la hoja de excel pero es funcional te agradezco nuevamente
saludos

LEGS

Gracias por tu ayuda

LEGS


"Héctor Miguel" escribió:

hola, Edgar !

con los nuevos datos que expones...
[y abrevio a solo los que considero 'pertinentes', ya que me has dejado verdaderamente 'aturdido' con tanto GRITO] :))

> ... LA CELDA "X" ... LO PONGO ASI ... LINKEDCELL = E11 [...]
> ... LO ESTOY HACIENDO CON 21 CELDAS [...]
> ... LO QUE ME GENERA EL VB A PARTIR DE LA GRABACION, QUEDA ASI:
> ...
> Range("L11").Select
> ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7], listmat, 3, FALSE)" [...]
> Range("L12").Select
> ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7], listmat, 3, FALSE)" [...]
> ...
> ... LA CELDA "X" SON... DONDE ESTAN COLOCADOS LOS COMBOS E11, E12, E13..E32
> ... EN OTRA HOJA... VIENE LA DESCRIPCION DE MATERIALES Y LOS PRECIOS DE MTY - TAMPICO Y VA DE A2:C289

1) dejame insistir en el siguiente punto de la propuesta anterior:
>> [probablemente] seria suficiente su usas *combos* del [menu] datos / validacion / lista
>> y aplicas la funcion =buscarv(...) donde debas rescatar los datos complementarios -?-

2) con lo anterior podrias ahorrarte codigos y la insercion de muchos/demsiados objetos [como los combox] +/- como sigue:

a) selecciona el rango donde necesitas los combox en 'su' hoja [que no se cual sea]... -> E11:E32 ???
-> ve a [menu] datos / validacion... / [configuracion] permitir -> lista y marca celda con lista desplegable
-> en el cuadro de edicion de referencias [origen] introduce la siguiente formula: -> =desref(listamat,,,,1)
-> termina/acepta/...

b) selecciona la celda donde la macro esta depositando la primer formula [L11 ?] y...
-> establecela directa/manual/mente... [p.e.] =si(e11="","",buscarv(e11,listamat,3,0))
-> copiala/arrastrala/... hasta su pareja de celdas en la columna 'E'... [hasta L32 ?]

hasta aqui... comentas *como vamos* ?
saludos,
hector.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida