Longitud del texto en un cuadro de lista de una Validacion

05/11/2003 - 15:50 por Henry Sanchez | Informe spam
Hola Grupo,

Utilizo con bastante frecuencia validaciones tipo lista en
mis aplicaciones, de esta forma, el usuario puede
seleccionar de entre un grupo de opciones de la manera mas
sencilla posible.
El problema que siempre he tenido es que no he podido
unificar el ancho de las opciones, me explico:
Tengo:
Arena: $100
Cemento: $200
Ladrillo tipo A: $50
Grava: $100

cuando en realidad quisiera tener
Arena . $100
Cemento ... $200
Ladrillo tipo A ... $ 50
Grava . $100

Es decir, compensar las diferencias de longitud en el
texto con el uso del caracter "."

La primera idea que se me ocurrio fue calcular el numero
de caracteres de cada una de las opciones (usando la
funcion Len), pero esto no me sirve por que los caracteres
tienen diferente ancho.
Debe haber una funcion que devuelva el ancho de una cadena
de caracteres, alguno la conoce? (o puede darme una
sugerencia)
Otra consulta: Alguna vez vi en Visual Basic una funcion
que devuelve una cadena de caracteres repetida, algo asi
como Funcion(".",8) y que devuelva ""
No recuerdo el nombre y no he podido encontrarla en la
ayuda.

Saludos,

Henry

Preguntas similare

Leer las respuestas

#1 Ricardo
05/11/2003 - 21:34 | Informe spam
R.Hola Henry.Si lo que quieres es que siempre te aparezcan
los puntos a partir de un texto sea cual sea su longitud y
sea cual sea el ancho de la columna prueba de usar este
Formato de celda personalizado.Seleccionas rango y clic
con boton derecho y en el menu emergente seleccionar
Formato de celda
luego pestaña Numero y Personalizada y colocar el
siguiente formato: @*. (Arroba,arterisco punto) pongas lo
que pongas sin teclear ningun punto al dar Intro
apareceran los puntitos,adaptandose al ancho de la
columna,si esta se hace mas grande se veran mas puntos
Hola Grupo,

Utilizo con bastante frecuencia validaciones tipo lista


en
mis aplicaciones, de esta forma, el usuario puede
seleccionar de entre un grupo de opciones de la manera


mas
sencilla posible.
El problema que siempre he tenido es que no he podido
unificar el ancho de las opciones, me explico:
Tengo:
Arena: $100
Cemento: $200
Ladrillo tipo A: $50
Grava: $100

cuando en realidad quisiera tener
Arena . $100
Cemento ... $200
Ladrillo tipo A ... $ 50
Grava . $100

Es decir, compensar las diferencias de longitud en el
texto con el uso del caracter "."

La primera idea que se me ocurrio fue calcular el numero
de caracteres de cada una de las opciones (usando la
funcion Len), pero esto no me sirve por que los


caracteres
tienen diferente ancho.
Debe haber una funcion que devuelva el ancho de una


cadena
de caracteres, alguno la conoce? (o puede darme una
sugerencia)
Otra consulta: Alguna vez vi en Visual Basic una funcion
que devuelve una cadena de caracteres repetida, algo asi
como Funcion(".",8) y que devuelva ""
No recuerdo el nombre y no he podido encontrarla en la
ayuda.

Saludos,

Henry
.

Respuesta Responder a este mensaje
#2 Héctor Miguel
06/11/2003 - 11:06 | Informe spam
Hola, Henry !

... validaciones tipo lista ... el usuario puede seleccionar ... opciones de la manera mas sencilla posible.
... problema que siempre he tenido es ... unificar el ancho de las opciones [...]
Arena: $100 [...] cuando en realidad quisiera tener
Arena . $100 [...]
... compensar las diferencias de longitud en el texto con el uso del caracter "."
... se me ocurrio ... calcular el numero de caracteres ... (usando la funcion Len)
... no me sirve por que los caracteres tienen diferente ancho.
... una funcion que devuelva el ancho de una cadena de caracteres alguno la conoce? (o ... una sugerencia)

... Alguna vez vi en VB una funcion que devuelve una cadena de caracteres repetida
... algo asi como Funcion(".",8) y que devuelva ""
No recuerdo el nombre y no he podido encontrarla en la ayuda [...]



1.- cuando 'hablas' de la funcion 'Len', no se si te refieres a vba o usas excel en ingles :((
2.- las funciones que 'repiten' caracteres son:
[en vba] => String(n_veces, "caracter")
[hoja de calculo] => =Repetir("caracter",n_veces) [en ingles es] =Rept("caracter",n_veces)
3.- las funciones que 'devuelven' el ancho de una cadena de caracteres son:
[en vba] => Len(expresion)
[hoja de calculo] => =Largo("texto") [en ingles es] =Len("texto")
4.- para lograr [+/-] el 'efecto' que buscas [y sin 'llegarle' -todavia- a macros] 'tendrias que' hacer lo siguiente:
a) usar celdas/columnas 'aparte' para...
1.- los conceptos [arena, cemento, etc.]
2.- los precios [100, 200, etc.] => no 'importa' el formato numerico, lo 'pondremos' en la siguiente celda ...
3.- la 'concatenacion' [y llenado 'con puntos'] para el listado [origen de la lista en la/s celda/s con validacion]
b) usar la siguiente formula en la/s celda/s del punto 3 anterior:
[español] ¡&Repetir(".",Celda("Ancho")-Largo(A1&Texto(B1," $ #,##0")))&Texto(B1," $ #,##0")
[en ingles] ¡&Rept(".",Cell("Width")-Len(A1&Text(B1," $ #,##0")))&Text(B1," $ #,##0")
c) establecer 'el ancho' de la columna ['concatenadas' Y 'validadas'] en 'bastante MAS' que los caracteres que 'se vean' < debido a que la funcion Celda("Ancho") [o Cell("Width")] 'cuenta' los caracteres que 'caben' en el ancho de una celda
'redondeado' a un entero, y cada unidad de ancho es igual al ancho de un caracter en el tamaño actual de fuente
seleccionado
d) usar [de preferencia] fuentes 'sencillas' como arial o de 'ancho fijo' [al menos, en las celdas 'concatenadas']

parece 'todo un rollo' [en realidad es bastante 'sencillo'] :)) ¿comentas?

Saludos,
Héctor.
Respuesta Responder a este mensaje
#3 Henry Sanchez
06/11/2003 - 15:17 | Informe spam
Gracias Ricardo

No es exactamente lo que necesito, pero tu formato @*. me
dio una idea para otros asuntos que estoy programando

Saludos,

Henry
R.Hola Henry.Si lo que quieres es que siempre te


aparezcan
los puntos a partir de un texto sea cual sea su longitud


y
sea cual sea el ancho de la columna prueba de usar este
Formato de celda personalizado.Seleccionas rango y clic
con boton derecho y en el menu emergente seleccionar
Formato de celda
luego pestaña Numero y Personalizada y colocar el
siguiente formato: @*. (Arroba,arterisco punto) pongas lo
que pongas sin teclear ningun punto al dar Intro
apareceran los puntitos,adaptandose al ancho de la
columna,si esta se hace mas grande se veran mas puntos
Hola Grupo,

Utilizo con bastante frecuencia validaciones tipo lista


en
mis aplicaciones, de esta forma, el usuario puede
seleccionar de entre un grupo de opciones de la manera


mas
sencilla posible.
El problema que siempre he tenido es que no he podido
unificar el ancho de las opciones, me explico:
Tengo:
Arena: $100
Cemento: $200
Ladrillo tipo A: $50
Grava: $100

cuando en realidad quisiera tener
Arena . $100
Cemento ... $200
Ladrillo tipo A ... $ 50
Grava . $100

Es decir, compensar las diferencias de longitud en el
texto con el uso del caracter "."

La primera idea que se me ocurrio fue calcular el numero
de caracteres de cada una de las opciones (usando la
funcion Len), pero esto no me sirve por que los


caracteres
tienen diferente ancho.
Debe haber una funcion que devuelva el ancho de una


cadena
de caracteres, alguno la conoce? (o puede darme una
sugerencia)
Otra consulta: Alguna vez vi en Visual Basic una funcion
que devuelve una cadena de caracteres repetida, algo asi
como Funcion(".",8) y que devuelva ""
No recuerdo el nombre y no he podido encontrarla en la
ayuda.

Saludos,

Henry
.



.

Respuesta Responder a este mensaje
#4 Henry Sanchez
06/11/2003 - 15:19 | Informe spam
Gracias Hector

Voy a probar y te comento

Saludos,

Henry

Hola, Henry !

... validaciones tipo lista ... el usuario puede




seleccionar ... opciones de la manera mas sencilla posible.
... problema que siempre he tenido es ... unificar el




ancho de las opciones [...]
Arena: $100 [...] cuando en realidad




quisiera tener
Arena . $100 [...]
... compensar las diferencias de longitud en el texto




con el uso del caracter "."
... se me ocurrio ... calcular el numero de




caracteres ... (usando la funcion Len)
... no me sirve por que los caracteres tienen diferente




ancho.
... una funcion que devuelva el ancho de una cadena de




caracteres alguno la conoce? (o ... una sugerencia)

... Alguna vez vi en VB una funcion que devuelve una




cadena de caracteres repetida
... algo asi como Funcion(".",8) y que




devuelva ""
No recuerdo el nombre y no he podido encontrarla en la




ayuda [...]

1.- cuando 'hablas' de la funcion 'Len', no se si te


refieres a vba o usas excel en ingles :((
2.- las funciones que 'repiten' caracteres son:
[en vba] => String(n_veces, "caracter")
[hoja de calculo] => =Repetir


("caracter",n_veces) [en ingles es] =Rept
("caracter",n_veces)
3.- las funciones que 'devuelven' el ancho de una cadena


de caracteres son:
[en vba] => Len(expresion)
[hoja de calculo] => =Largo("texto") [en ingles


es] =Len("texto")
4.- para lograr [+/-] el 'efecto' que buscas [y


sin 'llegarle' -todavia- a macros] 'tendrias que' hacer lo
siguiente:
a) usar celdas/columnas 'aparte' para...
1.- los conceptos [arena, cemento, etc.]
2.- los precios [100, 200, etc.] =>


no 'importa' el formato numerico, lo 'pondremos' en la
siguiente celda ...
3.- la 'concatenacion' [y llenado 'con puntos']


para el listado [origen de la lista en la/s celda/s con
validacion]
b) usar la siguiente formula en la/s celda/s del


punto 3 anterior:
[español] ¡&Repetir(".",Celda("Ancho")-Largo


(A1&Texto(B1," $ #,##0")))&Texto(B1," $ #,##0")
[en ingles] ¡&Rept(".",Cell("Width")-Len


(A1&Text(B1," $ #,##0")))&Text(B1," $ #,##0")
c) establecer 'el ancho' de la columna


['concatenadas' Y 'validadas'] en 'bastante MAS' que los
caracteres que 'se vean' <> debido a que la funcion Celda("Ancho") [o Cell
("Width")] 'cuenta' los caracteres que 'caben' en el ancho
de una celda
'redondeado' a un entero, y cada unidad de ancho


es igual al ancho de un caracter en el tamaño actual de
fuente
seleccionado
d) usar [de preferencia] fuentes 'sencillas' como


arial o de 'ancho fijo' [al menos, en las
celdas 'concatenadas']

parece 'todo un rollo' [en realidad es


bastante 'sencillo'] :)) ¿comentas?

Saludos,
Héctor.


.

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