Cuadro de texto usando vb

25/09/2007 - 13:16 por Luis V. | Informe spam
Saludos y gracias de antemano.

Tengo un problema: Cuando intento insertar un cuadro de texto, en
Excel, cuyo contenido es mayor de 255 caracteres, me inserta un cuadro
en blanco, si inserto menos cantidad si que se genera bien, y si lo
hago a pelo en la propia hoja de cálculo si que me deja insertar mas
de esos 255 caracteres.

¿Alguién sabe como poder insertar mas de 255 caracteres en el cuadro
de texto? Este es el código que utilizo:

Dim MiHoja As Excel.Worksheet
Dim Texto As String
Dim NombreMes As String
Dim T1, T2, T3, T4, T5, T6, T7, T8, T9, TA, TB As String

NombreMes = "DEMANDAS OCR: " & UCase(MonthName(Month(Date) - 1)) & " "
& Year(Now) & Chr(10)

T1 = "TOTALES: " & Format(TotEs, "#,##0") & Chr(10)
T2 = "RECO: " & Format(TotSi, "#,##0") & Chr(10)
T3 = "N.RECO: " & Format(TotNo, "#,##0") & Chr(10)
T4 = "AZ(+): " & Format(TotAzS, "#,##0") & Chr(10)
T5 = "AZ(-): " & Format(TotAzN, "#,##0") & Chr(10)
T6 = "AG(+): " & Format(TotAgS, "#,##0") & Chr(10)
T7 = "AG(-): " & Format(TotAgN, "#,##0") & Chr(10)
T8 = "AI(+): " & Format(TotAiS, "#,##0") & Chr(10)
T9 = "AI(-): " & Format(TotAiN, "#,##0") & Chr(10)
TA = "DA(+): " & Format(TotDaS, "#,##0") & Chr(10)
TB = "DA(-): " & Format(TotDaN, "#,##0") & Chr(10)

Texto = NombreMes & T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & TA &
TB '& " "

Set MiHoja = Worksheets("TOTALMES")
MiHoja.Shapes.AddTextbox(1, 0, 37, 266, 247).Select

With Selection
.Characters.Text = Texto
.Characters.Font.Name = "Courier New"
.Characters.Font.Size = 14
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.Orientation = xlHorizontal
End With

etc...

Muchas gracias y un saludo
Luis V.

Preguntas similare

Leer las respuestas

#1 Ivan
25/09/2007 - 18:24 | Informe spam
hola Luis,

solo por si acaso, prueba a no seleccionar . Creo que en ocasiones hay
limites en excel (no se si sera el caso) que se aplican cuando se
trata de selecciones, y no haciendo simple referencia al/los objetos
(aparte de que normalmente es innecesario seleccionar para trabajar en
vb/a)

aunque no lo he probado, ni se si sera el caso [es posible que no], en
tanto alguien que lo sepa te echa una mano, si quieres prueba a
cambiar esto=>


MiHoja.Shapes.AddTextbox(1, 0, 37, 266, 247).Select

With Selection
.Characters.Text = Texto
.Characters.Font.Name = "Courier New"
.Characters.Font.Size = 14
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.Orientation = xlHorizontal
End With




por esto=>


With MiHoja.Shapes.AddTextbox(1, 0, 37, 266, 247)
.Characters.Text = Texto
.Characters.Font.Name = "Courier New"
.Characters.Font.Size = 14
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.Orientation = xlHorizontal
End With

a ver si hay suerte

un saludo
Ivan
Respuesta Responder a este mensaje
#2 Ivan
25/09/2007 - 18:48 | Informe spam
hola de nuevo Luis

la verdad es que el fallo no estaba donde yo decia, pues parece que en
cualquier caso el limite sigue siendo el mismo 255 caracteres


pero de todas formas te comento que en tu codigo, aunque no tiene que
ver habia otro falo importante: te faltaba el paso por el objeto
TextFrame, que contiene el texto del Shape y sus caracteristicas
(dicho en bruto)

tu codigo podria quedar +/- asi, aunque esto no resuelve tu problema:

Sub testShaapes()
Dim texto As String
texto = "texto"
texto = texto & Application.Rept(texto, 50)
With Worksheets("TOTALMES").Shapes.AddTextbox(1, 0, 37, 266, 247)
With .TextFrame
.Characters.Text = texto
.Characters.Font.Name = "Courier New"
.Characters.Font.Size = 14
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.Orientation = msoTextOrientationHorizontal
End With
End With
End Sub


bueno, en cuanto al limite quizas exista la posibilidad de usar algun
otro objeto que no sea un shape, pero no sabria decirte.

Espero que si alguien lo sabe te eche un cable

un saludo
Ivan
Respuesta Responder a este mensaje
#3 Héctor Miguel
26/09/2007 - 08:58 | Informe spam
hola, Luis !

Tengo un problema: Cuando intento insertar un cuadro de texto, en Excel, cuyo contenido es mayor de 255 caracteres
me inserta un cuadro en blanco, si inserto menos cantidad si que se genera bien
y si lo hago a pelo en la propia hoja de calculo si que me deja insertar mas de esos 255 caracteres.
Alguien sabe como poder insertar mas de 255 caracteres en el cuadro de texto? Este es el codigo que utilizo:



para *este* caso, puedes utilizar el metodo *SendKeys* para enviar como pulsaciones de teclado tu variable *Texto*

1) modifica la linea con la que depositas el texto en el cuadro...
de: -> .Characters.Text = Texto
a: -> SendKeys Texto & "{esc}"

2) el *pero*... es que en el metodo *SendKeys* es necesario *delimitar*...
-> cualquier simbolo de expresiones aritmeticas y ponerlo entre llaves -> {...} [p.e.]
deberas sustituir [TODAS] las expresiones...
de este tipo: -> T4 = "AZ(+): " & Format(TotAzS, "#,##0") & Chr(10)
por este otro -> T4 = "AZ{(}{+}{)}: " & Format(TotAzS, "#,##0") & Chr(10)

saludos,
hector.

__ el codigo expuesto __
Dim MiHoja As Excel.Worksheet
Dim Texto As String
Dim NombreMes As String
Dim T1, T2, T3, T4, T5, T6, T7, T8, T9, TA, TB As String
NombreMes = "DEMANDAS OCR: " & UCase(MonthName(Month(Date) - 1)) & " " & Year(Now) & Chr(10)
T1 = "TOTALES: " & Format(TotEs, "#,##0") & Chr(10)
T2 = "RECO: " & Format(TotSi, "#,##0") & Chr(10)
T3 = "N.RECO: " & Format(TotNo, "#,##0") & Chr(10)
T4 = "AZ(+): " & Format(TotAzS, "#,##0") & Chr(10)
T5 = "AZ(-): " & Format(TotAzN, "#,##0") & Chr(10)
T6 = "AG(+): " & Format(TotAgS, "#,##0") & Chr(10)
T7 = "AG(-): " & Format(TotAgN, "#,##0") & Chr(10)
T8 = "AI(+): " & Format(TotAiS, "#,##0") & Chr(10)
T9 = "AI(-): " & Format(TotAiN, "#,##0") & Chr(10)
TA = "DA(+): " & Format(TotDaS, "#,##0") & Chr(10)
TB = "DA(-): " & Format(TotDaN, "#,##0") & Chr(10)
Texto = NombreMes & T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & TA & TB '& " "
Set MiHoja = Worksheets("TOTALMES")
MiHoja.Shapes.AddTextbox(1, 0, 37, 266, 247).Select
With Selection
.Characters.Text = Texto
.Characters.Font.Name = "Courier New"
.Characters.Font.Size = 14
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.Orientation = xlHorizontal
End With

etc...
Respuesta Responder a este mensaje
#4 Luis V.
26/09/2007 - 10:09 | Informe spam
On 25 sep, 18:48, Ivan wrote:
hola de nuevo Luis

la verdad es que el fallo no estaba donde yo decia, pues parece que en
cualquier caso el limite sigue siendo el mismo 255 caracteres

pero de todas formas te comento que en tu codigo, aunque no tiene que
ver habia otro falo importante: te faltaba el paso por el objeto
TextFrame, que contiene el texto del Shape y sus caracteristicas
(dicho en bruto)

tu codigo podria quedar +/- asi, aunque esto no resuelve tu problema:

Sub testShaapes()
Dim texto As String
texto = "texto"
texto = texto & Application.Rept(texto, 50)
With Worksheets("TOTALMES").Shapes.AddTextbox(1, 0, 37, 266, 247)
With .TextFrame
.Characters.Text = texto
.Characters.Font.Name = "Courier New"
.Characters.Font.Size = 14
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.Orientation = msoTextOrientationHorizontal
End With
End With
End Sub

bueno, en cuanto al limite quizas exista la posibilidad de usar algun
otro objeto que no sea un shape, pero no sabria decirte.

Espero que si alguien lo sabe te eche un cable

un saludo
Ivan



Gracias Ivan por la aclaración, voy a probar la solución que me brinda
Héctor Miguel.
Un saludo
Luis V.
Respuesta Responder a este mensaje
#5 Luis V.
26/09/2007 - 10:20 | Informe spam
On 26 sep, 08:58, "Héctor Miguel"
wrote:
hola, Luis !

> Tengo un problema: Cuando intento insertar un cuadro de texto, en Excel, cuyo contenido es mayor de 255 caracteres
> me inserta un cuadro en blanco, si inserto menos cantidad si que se genera bien
> y si lo hago a pelo en la propia hoja de calculo si que me deja insertar mas de esos 255 caracteres.
> Alguien sabe como poder insertar mas de 255 caracteres en el cuadro de texto? Este es el codigo que utilizo:

para *este* caso, puedes utilizar el metodo *SendKeys* para enviar como pulsaciones de teclado tu variable *Texto*

1) modifica la linea con la que depositas el texto en el cuadro...
de: -> .Characters.Text = Texto
a: -> SendKeys Texto & "{esc}"

2) el *pero*... es que en el metodo *SendKeys* es necesario *delimitar*...
-> cualquier simbolo de expresiones aritmeticas y ponerlo entre llaves -> {...} [p.e.]
deberas sustituir [TODAS] las expresiones...
de este tipo: -> T4 = "AZ(+): " & Format(TotAzS, "#,##0") & Chr(10)
por este otro -> T4 = "AZ{(}{+}{)}: " & Format(TotAzS, "#,##0") & Chr(10)

saludos,
hector.

__ el codigo expuesto __
Dim MiHoja As Excel.Worksheet
Dim Texto As String
Dim NombreMes As String
Dim T1, T2, T3, T4, T5, T6, T7, T8, T9, TA, TB As String
NombreMes = "DEMANDAS OCR: " & UCase(MonthName(Month(Date) - 1)) & " " & Year(Now) & Chr(10)
T1 = "TOTALES: " & Format(TotEs, "#,##0") & Chr(10)
T2 = "RECO: " & Format(TotSi, "#,##0") & Chr(10)
T3 = "N.RECO: " & Format(TotNo, "#,##0") & Chr(10)
T4 = "AZ(+): " & Format(TotAzS, "#,##0") & Chr(10)
T5 = "AZ(-): " & Format(TotAzN, "#,##0") & Chr(10)
T6 = "AG(+): " & Format(TotAgS, "#,##0") & Chr(10)
T7 = "AG(-): " & Format(TotAgN, "#,##0") & Chr(10)
T8 = "AI(+): " & Format(TotAiS, "#,##0") & Chr(10)
T9 = "AI(-): " & Format(TotAiN, "#,##0") & Chr(10)
TA = "DA(+): " & Format(TotDaS, "#,##0") & Chr(10)
TB = "DA(-): " & Format(TotDaN, "#,##0") & Chr(10)
Texto = NombreMes & T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & TA & TB '& " "
Set MiHoja = Worksheets("TOTALMES")
MiHoja.Shapes.AddTextbox(1, 0, 37, 266, 247).Select
With Selection
.Characters.Text = Texto
.Characters.Font.Name = "Courier New"
.Characters.Font.Size = 14
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.Orientation = xlHorizontal
End With

etc...



Muchas gracias Hector, funciona de maravilla. Para el poner las llaves
"{}" utilizo la función replace un par de veces y listo.
Gracias y un saludo
LuisV.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida