Excel - RETORNO DE CARRO

 
Vista:

RETORNO DE CARRO

Publicado por frany (62 intervenciones) el 01/10/2006 22:36:23
Hola que tal.
Tengo el siguiente codigo en un USERFORM el userform2 en concreto.

Lo que pretendo es poder escribir texto en el texbox1 y que al pulsar enter pueda continuar escribiendo en l siguiente linea, pero me surje un problema.

cuando pulso enter, el foco se va al boton commandbutton1 y para que pueda volver al texbox1 he de hacer un click dentro del texbox1.
Me podriais ayudar para poder continuar con mi macro, es que pretendo pasar de un texbox1 el texto con fomrato a una celda de excel pero veo que un poco complicado, aun no he llegado a darle formato con negritas a los textos, pero veo que es dificil pues el texbox1 tiene pocas opciones.

Muchas gracias por cualquier ayuda.


Private Sub CommandButton1_Click()
ActiveCell.Value = texto_

End Sub

Private Sub TextBox1_Change()
texto_ = UserForm2.TextBox1.Value
End Sub


Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
tecla = KeyCode
pepito = texto_
If tecla = 13 Then
pepito = texto_
texto_ = texto_ & Chr$(10)
UserForm2.TextBox1.Value = texto_
UserForm2.TextBox1.SetFocus' ESTO NO ME FUNCIONA :-(

End If

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:RETORNO DE CARRO

Publicado por JuanC (792 intervenciones) el 02/10/2006 18:14:46
Dos cosas:
- El TextBox debe ser MultiLine (= True)
- Para seguir escribiendo en la siguiente linea pulsás Ctrl+Enter
o ponés la propiedad EnterKeyBehavior = True

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:RETORNO DE CARRO

Publicado por frany (62 intervenciones) el 02/10/2006 21:30:45
el textbox lo tenia en multilinea pero lo segundo no lo sabia y te agradezco la ayuda.

El codigo que intenté no me funcionaba del todo bien y prefiero eliminar las liens de codigo poner directamente EnterKeyBehavio =True pues funciona de maravilla.

Lo unico que me queda es poder poner negritas ( me conformo con eso como formateo) a algunas palabras dentro del texbox.

Sabes alguna forma en la que pueda lograr esto, imagino que tendré que crear un codigo y habia pensado en anteponer caracteres especiales tal y como lo hacia el WordPerfect 5 para MsDos pero no consigo determinar que evento me puede servir para marcar una parte del texto dentro de un textbox , es decir poder seleccionar marcando luego dar a una tecla que me genere el codigo adecuado.

Es muy complicado lo que pido?

Saludos y gracias JuanC eres genial.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:RETORNO DE CARRO

Publicado por frany (62 intervenciones) el 02/10/2006 21:51:43
hola de nuevo JuanC
He buscado mediante la grabadora de macros como hacer el codigo y me da esto, lo cual me permite hacer lo que quiero con el formato.

Pero no se como capturar o marcar el texto mediante codigo .
Lo que necesitaria segun esto es saber donde empieza el caracter a poenr en negritas y donde termina, pero mediante codigo no tengo ni idea de como hacerlo.

ActiveCell.FormulaR1C1 = "123456789 12345678"
With ActiveCell.Characters(Start:=1, Length:=2).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With

Graicias por cualquier ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:RETORNO DE CARRO

Publicado por JuanC (792 intervenciones) el 02/10/2006 21:57:29
Hasta donde sé no se puede en un TextBox poner dos tipos de fuente
simultáneamente; debería usarce un RichTextBox (que soporta texto
enriquecido). Aún así creo que debe recurrirse a la API... mejor olvidate... ;-)
Lo qué sí podés hacer es usar caracteres separadores que indiquen el
comienzo y el fin del texto que debe ir en negrita -o cualquier otro formato-
y al pasar el texto a una celda, aplicás el formato en esa celda.

Ejemplo (coloca negrita al tercer caracter de la palabra ubicada en A1):

With [A1].Characters(Start:=1, Length:=2).Font
.FontStyle = "Normal"
End With
With [A1].Characters(Start:=3, Length:=1).Font
.FontStyle = "Negrita"
End With
With [A1].Characters(Start:=4, Length:=1).Font
.FontStyle = "Normal"
End With

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Posible solución...

Publicado por JuanC (792 intervenciones) el 03/10/2006 01:05:05
Acá va un fragmento que te puede ayudar a resolver el tema...
Lo hice recién... así que disculpame si no es "óptimo".


Si escribís en el TextBox1
"Hola que tal <frany>!
y ejecutás la macro, en la celda A1 aparecerá el texto
con "frany" en negrita.

Option Explicit

Sub Test() 'By JuanC 2006
Dim iPosIni&, iPosFin&, s$
Dim a() As String, c&, i&

s = TextBox1.Text
s = VBA.Replace(s, vbCrLf, Chr(10))

[A1] = s

iPosIni = InStr(1, s, "<")
iPosFin = InStr(1, s, ">")

ReDim a(0) As String

i = 0
Do While iPosIni > 0 And iPosFin > 0
c = UBound(a)
ReDim Preserve a(c + 1) As String
a(c) = iPosIni & ":" & iPosFin
s = VBA.Replace(s, "<", "_", 1, 1)
s = VBA.Replace(s, ">", "_", 1, 1)
iPosIni = InStr(1, s, "<")
iPosFin = InStr(1, s, ">")
Loop

s = [A1].Value
s = VBA.Replace(s, "<", "")
s = VBA.Replace(s, ">", "")
[A1] = s
[A1].Font.FontStyle = "Normal"

c = UBound(a) - 1
For i = 0 To c
iPosIni = CLng(Left(a(i), InStr(1, a(i), ":") - 1))
iPosFin = CLng(Mid(a(i), InStr(a(i), ":") + 1))
With [A1].Characters(Start:=iPosIni - 2 * (i), Length:=(iPosFin - 2 * (i + 1) + 1) - (iPosIni - 2 * i)).Font
.FontStyle = "Negrita"
End With
Next

Erase a
End Sub

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Posible solución...

Publicado por frany (62 intervenciones) el 03/10/2006 21:55:58
Ante todo muchas gracias por las molestias que te tomas en crear un codigo especifico para mi caso.

Eres muy amable.

bueno aunque aun no lo he probado imagino que funcionará muy bien, lo malo es que yo andaba buscando a ver si se pudiera hacer con la fisolosofia wysiwyg

no se si se escribe asi del todo ,pero en fin lo que ves es lo que obtienes, imagino que para eso habria que hacerlo de otra forma y de seguro que mis conocimientos no llegan a tanto :-(.

Tambien y aunque peque de pesado (perdoname) te queria preguntar si es posible marcar con el raton o cual seria el evento a applicar para hacer unsa seleccion en el texto escrito en ese texbox y luego poder aplicar el codigo que propones.

Se que quizas pido mucho , tan solo dime si se puede o no, yo ya me calentaré la cabeza para sacar el codigo, no te preocupes tanto que quizas tengas que hacer cosas mas importantes que ayudarme a mi creando codigo.

Gracias de nuevo.

Saludos.

Francisco Naranjo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Posible solución...

Publicado por JuanC (792 intervenciones) el 04/10/2006 01:00:52
De nada, lo hago por 2 cosas: me gusta hacerlo y me gusta ayudar...

Para aplicar el código, seleccionas el fragmento de texto al cual le
quieres aplicar el formato negrita -dentro del TextBox- y usando un botón
agregas los caracteres "<" ">" que indican el inicio y el fin del texto que
irá en negrita.
Puedes usar otros signos como ¤(Alt+207) ð(Alt+208) þ(Alt+231) Þ(Alt+232)
que es más difícil que aparezcan en un texto "normal".
Incluso podés usar para definir otro tipo de formato: negrita+subrayado,cursiva...
y te dejo de deber el código inverso al siguiente, es decir, para quitar negrita...
Cuando lo tengas pasamelo, ok?

'Este código sólo marca el texto dentro del TextBox
'Luego debe aplicarse el código del post anterior para que tenga afecto en
'la celda... Al código anterior le faltó Application.ScreenUpdating = False/True
'Implementalo como mejor te parezca... esto es sólo un ejemplo...

Private Sub CommandButton1_Click()
Dim lPosFin&
If TextBox1.SelLength < 1 Then Exit Sub
With TextBox1
lPosFin = .SelStart + .SelLength + 1
.SelLength = 0
.SelText = "<"
.SelStart = lPosFin
.SelText = ">"
End With
End Sub

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Posible solución...

Publicado por frany (62 intervenciones) el 04/10/2006 12:00:09
La verdad que si toda la gente fuera como tu o al menos un porcentaje de este mundo, todo seria distinto.

Me alegro por tu espiritu altruista.

Muchisimas gracias por la ayuda, he visto que funciona de lujo .
Aun lo tengo que meter dentro de la macro , ya que uso un poco en casa y en el trabajo, en el trabajo tan solo he podido ver que funciona ya en casa si es que tengo tiempo lo intentaré acabar.

Prometo que en cuanto lo tenga te informo y si quieres te doy el codigo o lo pego aqui para otros, bueno se que a ti no te hace falta ya que tu eres un maestro.

Un saludo JuanC y muchas gracias de nuevo.

Francisco Naranjo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Posible solución...

Publicado por frany (62 intervenciones) el 04/10/2006 13:04:11
Lo prometido es deuda
lo hice en el mismo boton tal y como opera Word mira a ver los fallos

Private Sub CommandButton1_Click()
Dim lPosFin&
If TextBox1.SelLength < 1 Then Exit Sub

inicio = Left(TextBox1.SelText, 1)
fin = Right(TextBox1.SelText, 1)

negrita = inicio & fin
es_negrita = False

If negrita = "<>" Then
es_negrita = True
no_negrita = Mid(TextBox1.SelText, 2, TextBox1.SelLength - 2)
End If

Select Case es_negrita

Case False
With TextBox1
lPosFin = .SelStart + .SelLength + 1
.SelLength = 0
.SelText = "<"
.SelStart = lPosFin
.SelText = ">"
End With
Case True

TextBox1.SelText = no_negrita

End Select


End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Posible solución...

Publicado por JuanC (792 intervenciones) el 04/10/2006 17:59:48
Bien, gracias...
Viste que no era tan difícil!!!

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Posible solución...

Publicado por frany (62 intervenciones) el 04/10/2006 21:45:04
Las cosas no son dificiles cuando las explican gente como tu.

Gracias.

Saludos desde Malaga
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar