TextBox con AutoShrink

joelcg

New Member
Joined
Dec 29, 2004
Messages
5
Necesito el codigo para hacer que un textBox permita que el texto que se escribe en el se pueda reducir para que quepa dentro de si. Es algo como un autoshink con wraptext en una celda pero lo necesito para un userform.
 

Excel Facts

Does the VLOOKUP table have to be sorted?
No! when you are using an exact match, the VLOOKUP table can be in any order. Best-selling items at the top is actually the best.
Primeramente, usted puede hacer View | Properties para ver las propiedades del Textbox control y poner WrapText a True (si uno hace esto también hay que cambiar MultiLine a True).

Si esto no es posible entonces usted puede aprovechar el Change Event Handler del Textbox control para ajustar el tamaño del Font.

<font face=Courier New>
<SPAN style="color:#00007F">Private</SPAN> <SPAN style="color:#00007F">Sub</SPAN> TextBox1_Change()
    <SPAN style="color:#00007F">Dim</SPAN> intFontSize <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Integer</SPAN>
    <SPAN style="color:#00007F">Select</SPAN> <SPAN style="color:#00007F">Case</SPAN> Len(Me.TextBox1.Text)
        <SPAN style="color:#00007F">Case</SPAN> <SPAN style="color:#00007F">Is</SPAN> < 50: intFontSize = 12
        <SPAN style="color:#00007F">Case</SPAN> <SPAN style="color:#00007F">Is</SPAN> < 70: intFontSize = 11
        <SPAN style="color:#00007F">Case</SPAN> <SPAN style="color:#00007F">Is</SPAN> < 100: intFontSize = 10
        <SPAN style="color:#00007F">Case</SPAN> <SPAN style="color:#00007F">Is</SPAN> < 120: intFontSize = 9
        <SPAN style="color:#00007F">Case</SPAN> <SPAN style="color:#00007F">Is</SPAN> < 150: intFontSize = 8
        <SPAN style="color:#00007F">Case</SPAN> Else: intFontSize = 7
    <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Select</SPAN>
    Me.TextBox1.Font.Size = intFontSize
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN>
</FONT>

Saludos,
 
Upvote 0
Re: Gracias GREG

HOLA amigo Greg:
:pray:
FUNCIONOOOOO lo que me distes y te estoy muy agradecido. Lo he adaptado a mi caso particular y aquí te paso mis especificaciones porque me funcionaron a la perfección.

El textbox mide HEIGHT = 78 WIDHT = 654 y el código que me distes lo adapté así:

Private Sub TextBox2_Change()
Dim intFontSize As Integer
Select Case Len(Me.TextBox2.Text)
Case Is < 25: intFontSize = 48
Case Is < 26: intFontSize = 47
Case Is < 27: intFontSize = 46
Case Is < 28: intFontSize = 44
Case Is < 29: intFontSize = 43
Case Is < 32: intFontSize = 40
Case Is < 33: intFontSize = 38
Case Is < 34: intFontSize = 35
Case Is < 36: intFontSize = 34
Case Is < 37: intFontSize = 33
Case Is < 38: intFontSize = 31
Case Is < 39: intFontSize = 30
Case Is < 41: intFontSize = 29
Case Is < 43: intFontSize = 27
Case Is < 44: intFontSize = 25.5
Case Is < 47: intFontSize = 25
Case Is < 53: intFontSize = 24.5
Case Is < 113: intFontSize = 22
Case Is < 123: intFontSize = 19
Case Is < 131: intFontSize = 18
Case Is < 143: intFontSize = 16
Case Is < 500: intFontSize = 15
End Select
Me.TextBox2.Font.Size = intFontSize
End Sub

ES UNA MARAVILLAAAAA como funciona como un autoshrink.

También me las arreglé para reducir el tamaño de este código usando formulas en combinación con la macro y es así:

En C6 escribo lo que se reflejará en el textbox2

En G6 escribo la formula =LEN(C6) para que me de la cantidad de caracteres en la celda.

En H6 escribo la formula =VLOOKUP(G6,valdea,2,) para que me busque esa cantidad que refleja la celda en una base de datos llamada valdea en la columna 2 tengo los valores que ves en la macro que modifiqué arriba.

Ahora abro un evento initialize para el userform que alberga el textbox y escribo la siguiente macro que resume la que me distes larga pero que hacen lo mismo:

Sub UserForm_Initialize()

Dim b as integer

Set b = 6

If Len(Me.TextBox2.Text) = Cells(b, 7).Value Then ‘compara largos de caracteres G6
intFontSize = Cells(b, 8).Value ‘ tamaño del texto en H6
Me.TextBox2.Font.Size = intFontSize ‘ tamaño del texto del textbox
End If

End Sub

Y esto me ahorra espacio y como esa variable b se incrementa por 6 cada vez que abro el userform (b = b + 6), entonces me valgo de tan solo UN userform para desplegar cientos de miles de valores que tengo en las celdas y eso me sirvió para ahorrar espacio en disco duro y eficiencia en memoria RAM.

He aprendido mucho estos días leyendo lo que escriben aquí y les estoy MUY AGRADECIDO que DIOS los bendiga y gracias.

PD: me compré el libro VBA and Macros de Bill Jelen para aprender más.
 
Upvote 0

Forum statistics

Threads
1,223,948
Messages
6,175,575
Members
452,652
Latest member
eduedu

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top