Excel - imprimir texto

 
Vista:
sin imagen de perfil

imprimir texto

Publicado por ricaurtem (206 intervenciones) el 08/06/2007 20:06:29
Hola que tal, tengo un medio problema, tengo una hoja en la cual hay unos cuadros de texto. nombre, monto y fecha. Y tengo otra hoja en donde tengo una lista de 5 nombres
Entonces hice un ciclo para que copiara el nombre, monto y fecha de la hoja 1 y lo ponga en los cuadros de texto que estan en la hoja 2 y lo imprima, luego que haga lo mismo hasta llegar a los 5 nombres, todo esto en un ciclo for.

El problema radica en que hace todo eso, pero cuando se imprime todo se imprime igual, o sea con el primer nombre de la lista lo demas de el. pero si esta cambiando los textos en los cuadro de texto.
Y no se que hacer para solucionar esto.
hay que hacer una pausa entre cada impresion, o hay que actualizar la pantalla?

Alguien por favor me ayude.
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:imprimir texto

Publicado por José Luis (700 intervenciones) el 08/06/2007 20:19:28
Si pusieras el código podríamos analizarlo para ver dónde está el error, pero así por ciencia infusa ...

Saludos
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
sin imagen de perfil

RE:imprimir texto

Publicado por ricaurtem (206 intervenciones) el 08/06/2007 21:30:18
aqui esta el codigo, el Application.ScreenUpdating desde ahora les digo que esto no causa el problema.

Private Sub CMDIMPRIMIR_Click()
Dim NOMBRE As String, FECHA As Date, MONTO As Single
Dim I As Integer

Application.ScreenUpdating = False

For I = 1 To 5
FECHA = CDate(Worksheets("CONFECCION").DTFECHAIMP.Value)
NOMBRE = CStr(Worksheets("CONFECCION").Cells(5 + I, 1))
MONTO = Val(Worksheets("CONFECCION").Cells(5 + I, 2))
Worksheets("CHEQUE").DTFECHA.Value = FECHA
Worksheets("CHEQUE").TXTFECHA.Text = FECHA
Worksheets("CHEQUE").TXTNOMBRE.Text = NOMBRE
Worksheets("CHEQUE").MKMONTO.Text = Val(MONTO)

Worksheets("CHEQUE").PrintOut

DoEvents

Next

'Worksheets("CONFECCION").Select

Worksheets("CHEQUE").DTFECHA.Value = FECHA
Worksheets("CHEQUE").TXTFECHA.Text = FECHA
Worksheets("CHEQUE").TXTNOMBRE.Text = ""
Worksheets("CHEQUE").MKMONTO.Text = 0
Application.ScreenUpdating = True
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:imprimir texto

Publicado por José Luis (1 intervención) el 08/06/2007 23:41:02
A parte de que mi excel no reconoce la sintaxis con la que contruyes el invento

Worksheets("CHEQUE").DTFECHA.Value = FECHA
Worksheets("CHEQUE").TXTFECHA.Text = FECHA
Worksheets("CHEQUE").TXTNOMBRE.Text = NOMBRE
Worksheets("CHEQUE").MKMONTO.Text = Val(MONTO)

Aconsejo que uses nombres de celda (busca en la ayuda de excel "Dar nombre a las celdas de un libro")

[DTFECHA].Value = FECHA
[TXTFECHA].Value = FECHA
[TXTNOMBRE].Value = NOMBRE
[MKMONTO].Value = MONTO

------------- Esto funciona perfectamente

Private Sub CMDIMPRIMIR_Click()
Dim NOMBRE As String, FECHA As Date, MONTO As Single
Dim I As Integer

'NO HACE FALTA - Application.ScreenUpdating = False
'
' Esto lo he sacado del bucle, es una tontería ir a buscar la fecha cada vez
' que se pasa por el inicio del bucle si siempre es la misma
'FECHA = CDate(Worksheets("CONFECCION").DTFECHAIMP.Value)
' He supuesto que la fecha está en la celda B4.
'
'
FECHA = CDate(Worksheets("CONFECCION").Cells(4, 2).Value)
[DTFECHA].Value = FECHA
[TXTFECHA].Value = FECHA
'
' Aunque usando nombres de celda, se podría hacer
'FECHA = CDate([DFECHAIMP].Value)
'

For I = 1 To 5
NOMBRE = CStr(Worksheets("CONFECCION").Cells(5 + I, 1))
MONTO = Val(Worksheets("CONFECCION").Cells(5 + I, 2))
[TXTNOMBRE].Value = NOMBRE
[MKMONTO].Value = MONTO

Worksheets("CHEQUE").PrintOut

''¿para qué haces esto? DoEvents

Next

'Worksheets("CONFECCION").Select

''Worksheets("CHEQUE").DTFECHA.Value = FECHA
''Worksheets("CHEQUE").TXTFECHA.Text = FECHA
''Worksheets("CHEQUE").TXTNOMBRE.Text = ""
''Worksheets("CHEQUE").MKMONTO.Text = 0
[DTFECHA].Value = FECHA
[TXTFECHA].Value = FECHA
[TXTNOMBRE].Value = ""
[MKMONTO].Value = 0
'NO HACE FALTA - Application.ScreenUpdating = True
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
sin imagen de perfil

RE:imprimir texto

Publicado por ricaurtem (206 intervenciones) el 09/06/2007 14:20:46
Bien a ver si resulta nuevamente la explicacion

Primero que todo esto :Application.ScreenUpdating = False
me sirve a mi para cuando estoy ejecutando la macro y moviendome de hojas no se note que se esta haciendo para el usuario. ademas que hace que las macros se ejecuten mas rapido.

Atendiendo a Jose Luis, mi invento es asi

Tengo 2 hojas, una llamada CHEQUE y la otra CONFECCION

Tengo 4 objetos en la hoja CHEQUE, no uso celdas, sino uso los objetos de cuadro de controles.
DTFECHA
TXTFECHA.
TXTNOMBRE
MKMONTO

y tengo una lista de 5 personas con monto y fecha, en la hoja CONFECCION. asi
NOMBRE, MONTO, FECHA
FULANO, 50 , 08/5/06
MENGANO,100, 9/6/6
SUTANO, 500,13/12/06
KAKUN, 500,13/12/06
MR VACA, 500,13/12/06

por efectos practicos siempre empiezo los datos en la fila 6, en la 5 encabezado.
por eso vez esto Worksheets("CONFECCION").Cells(5 + I, 1))
especificamente 5+i, asi siempre puedo meter botones y titulos arriba

regresando al codigo pusiste de leer la fecha en cada ciclo. en parte tienes razon, la idea original era tener una fecha diferente, pero luego puse un cuadro para tener una sola fecha, y me daba igual si lo leia o no nuevamente.

Entonces algo asi Worksheets("CHEQUE").TXTFECHA.Text = FECHA
significa: que ponga en la hoja CHEQUE en el cuadro de texto TXTFECHA la FECHA (que tomo del dtpicker DTFECHA de la hoja CONFECCION)

Con todo respeto yo no sere un programador profesional (ya que soy ing. civil). pero mis nociones y mi experiencia, aunque no es requisito, se suele utilizar, identificadores par los objetos, TXT para cuadros de texto, CMD para botones de comando, LBL para labels, etc... Y la verdad no me explico como me llamas invento si la verdad es una macro sencillona. Y vaya que te puedo enseñar macros que he hecho para instituciones bancarias y empresas en mi pais.

Entre otras cosas regrresando al tema. espero que alguien me capte.
Trato de imprimir la hoja cheque cada vez que cambio los datos en los cuadro de controles, pero siempre me aparece con los primero datos. que puedo hacer? es un error raro de excel verdad? alguna solucion? puedo enviar el documento para que lo vean.

pongo nuevamente el codigo

Private Sub CMDIMPRIMIR_Click()
Dim NOMBRE As String, FECHA As Date, MONTO As Single
Dim I As Integer

Application.ScreenUpdating = False

For I = 1 To 5
FECHA = CDate(Worksheets("CONFECCION").DTFECHAIMP.Value)
NOMBRE = CStr(Worksheets("CONFECCION").Cells(5 + I, 1))
MONTO = Val(Worksheets("CONFECCION").Cells(5 + I, 2))
Worksheets("CHEQUE").DTFECHA.Value = FECHA
Worksheets("CHEQUE").TXTFECHA.Text = FECHA
Worksheets("CHEQUE").TXTNOMBRE.Text = NOMBRE
Worksheets("CHEQUE").MKMONTO.Text = Val(MONTO)

Worksheets("CHEQUE").PrintOut

DoEvents

Next

'Worksheets("CONFECCION").Select

Worksheets("CHEQUE").DTFECHA.Value = FECHA
Worksheets("CHEQUE").TXTFECHA.Text = FECHA
Worksheets("CHEQUE").TXTNOMBRE.Text = ""
Worksheets("CHEQUE").MKMONTO.Text = 0
Application.ScreenUpdating = True
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:imprimir texto

Publicado por José Luis (700 intervenciones) el 10/06/2007 15:45:12
Pásame la hoja a mi correo, quita el ".no.spam.please".
En tu primer post, no indicaste que habías usado objetos. ¿No puedes usar hojas y celdas normales?.

Saludos
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