buscar en columna celda con mayor nro. de caracteres en columna

08/07/2007 - 02:12 por Ivan | Informe spam
hola a todos,

¿sabeis si existe alguna forma de buscar de una forma 'muy' rapida la celda con mayor nº de caracteres de una columna?

se trataria de algo que no ralentice apenas el proceso (tipo Application.Countif), sin bucles y, a ser posible sin
filtros, pues iria integrado en un procedimiento que ya de por si abusa un poco de estos.

aunque no se si sabre dejarlo claro, voy a tratar de explicar el motivo::

se trata de ajustar el ListWidth y el ColumnWidths de un combobox de x columnas que extrae su contenido de una/s
columna/s. Actualmente utilizo algo parecido a esto (las cantidades en nº son para dar un margen sobrante a las columnas
y por si 'apareciera' la barra de desplazamiento vertical)

with worksheets("Tal")
.columns.autofit
Combo_Destino.ListWidth = .[a1].Width + .[a2].Width + 60
Combo_Destino.ColumnWidths = .[a1].Width + 20 & ";" & .[a2].Width + 20
end with

con esto, si el tamaño del texto (y posiblemete la fuente) es igual en la lista que en el combo, +/- funciona bien.

el problema es cuando estos no coinciden, y sobre todo si puede darse la combinacion de varios tamaños de fuente en una
misma columna, pues, como se trataria de trabajar con listas ajenas al archivo, no es cuestion de ir alterando los
formatos que el usuario pudiera estar aplicando en sus archivos, ni de exponerse a tamaños de fuente 'incongruentes' en
el combo

aunque el trabajo se realiza sobre una copia, como el resultado se devolveria al original, lo ideal seria no alterar los
formatos que pudieran existir

asi puestos lo que se me ha ocurrido, a falta de cualquier otra idea que seria bien recibida, es buscar la celda con
mayor nº de caracteres, 'capturar' la fuente y el tamaño de esta en sendas variables, cambiarlos en esa celda por los
del combo, ajustar columna, tomar el ancho, y reponer todo a su estado original

como digo seria hacer la busqueda con algo tipo funcion de hoja (con bucles, pej. no creo que fuera complicado, pero no
es lo que me interesaria) que apenas suponga una demora (mas) para todo el proceso.

tampoco se trata de nada vital, como veis, pero si existe alguna forma os lo agradecere una vez mas

un saludo y hasta pronto
Ivan
 

Leer las respuestas

#1 Ivan
08/07/2007 - 02:28 | Informe spam
FE de erratas:

donde puse

with worksheets("Tal")
.columns.autofit
Combo_Destino.ListWidth = .[a1].Width + .[a2].Width + 60
Combo_Destino.ColumnWidths = .[a1].Width + 20 & ";" & .[a2].Width
+ 20
end with

queria poner

with worksheets("Tal")
.columns.autofit
Combo_Destino.ListWidth = .[a1].Width + .[b1].Width + 60
Combo_Destino.ColumnWidths = .[a1].Width + 20 & ";" & .[b1].Width
+ 20
end with

posiblemente se suponia, pero por si acaso

un saludo
Ivan

Preguntas similares