
Explico nuevamente
Publicado por ricaurtem (206 intervenciones) el 09/06/2007 14:19:42
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
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 pregunta


0