UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se pueden hacer consultas de Excel o VBA por mensaje privado.
Utiliza el botón buscar del foro y te ahorras tiempo para obtener "ayuda".

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

1RESUELTO Ayuda con mis Macros de Copiar el 12/06/14, 08:07 pm

Josefran


Hola Buenas Tardes Tengo 3 problemas el numero 1 tengo un Formulario en VB con excel el cual Agrega mis datos pero todos los agrega como texto, y ocupo que JOB me lo agrege como numero porque asi no sirve mi Siguiente columna que lo usa concatena. este es mi codigo y esta es la imagen.

'INICIO DE VALIDACIONES
    largo = txtBin.TextLength
    largo2 = txtProducto.TextLength
    largo3 = txtInstrumento.TextLength
   
   If largo <> 6 Or Not IsNumeric(txtBin.Value) Then
        MsgBox "El número debe ser a 6 dígitos y debe ser número"
        txtBin.SetFocus
    Else
         If largo2 <> 6 Or Not IsNumeric(txtProducto.Value) Then
                MsgBox "El número debe ser a 6 dígitos y debe ser número"
                txtProducto.SetFocus
         Else
           If largo3 <> 6 Or Not IsNumeric(txtInstrumento.Value) Then
                MsgBox "El número debe ser a 6 dígitos y debe ser número"
                txtInstrumento.SetFocus
           Else
                If cbSeleccioneSistema = "" Then
                    MsgBox "No se ha seleccionado un Sistema"
                    cbSeleccioneSistema.SetFocus
                Else
                    If cbSeleccioneSegmento = "" Then
                        MsgBox "No se ha ingresado un Segmento"
                        cbSeleccioneSegmento.SetFocus
                    Else
                        If cbMoneda = "" Then
                            MsgBox "No se ha seleccionado la Moneda"
                            cbMoneda.SetFocus
                        Else
                            If cbEstatus = "" Then
                                MsgBox "No se ha seleccionado un Estatus"
                                cbEstatus.SetFocus
                            Else
                                If cbAccountType = "" Then
                                    MsgBox "No se ha seleccionado un Tipo de Cuenta"
                                    cbAccountType.SetFocus
                                Else
                                    If txtBin = "" Then
                                       MsgBox "No se ha seleccionado un Bin"
                                       txtBin.SetFocus
                                    Else
                                        If txtProducto = "" Then
                                            MsgBox "No se ha seleccionado un Producto"
                                            txtProducto.SetFocus
                                        Else
                                            If txtInstrumento = "" Then
                                                    MsgBox "No se ha seleccionado un Instrumento"
                                                    txtInstrumento.SetFocus
                                            Else
                                                If txtSegmento = "" Then
                                                    MsgBox "No se ha seleccionado un Segmento"
                                                    txtSegmento.SetFocus
                                                Else
                                                    If txtDescripcionCorta = "" Then
                                                        MsgBox "No se ha seleccionado una Descripcion Corta"
                                                        txtDescripcionCorta.SetFocus
                                                    Else
                                                        If txtDescripcionLarga = "" Then
                                                            MsgBox "No se ha seleccionado una Descripcion Larga"
                                                            txtDescripcionLarga.SetFocus
                                                        Else
                                                            If txtAbreviación = "" Then
                                                                MsgBox "No se ha seleccionado una Abreviaciones"
                                                                txtAbreviación.SetFocus
                                                            Else
                                                                If txtTotalRegsAsoc = "" Then
                                                                     MsgBox "No se ha seleccionado un Total RegsAsoc"
                                                                     txtTotalRegsAsoc.SetFocus
                                                                Else
                                                                    If txtRefSeg = "" Then
                                                                        MsgBox "No se ha seleccionado un Total Ref Seg"
                                                                        txtRefSeg.SetFocus
                                                                    Else
                                                                      If txtSegmento2 = "" Then
                                                                         MsgBox "No se ha seleccionado un Segmento"
                                                                         txtSegmento2.SetFocus
                                                                      Else
                                                                            If txtTriad = "" Then
                                                                                MsgBox "No se ha seleccionado un Triad"
                                                                                txtTriad.SetFocus
                                                                            Else
                                                                                If txtScore = "" Then
                                                                                     MsgBox "No se ha seleccionado un Score"
                                                                                     txtScore.SetFocus
                                                                                Else
                                                                                    If cmbProceso = "" Then
                                                                                      MsgBox "No se ha seleccionado un Proceso"
                                                                                      cmbProceso.SetFocus
                                                                                    Else
                                                                                            'Call Desproteger
                                                                                            'ALTA DE LOS REGISTROS
                                                                                            Set TransRowRng = ThisWorkbook.Worksheets("CA-PRO-INS").Cells(1, 1).CurrentRegion
                                                                                            NewRow = TransRowRng.Rows.Count + 1
                                                                                            With ThisWorkbook.Worksheets("CA-PRO-INS")
                                                                                                .Cells(NewRow, 1).Value = cbSeleccioneSistema
                                                                                                .Cells(NewRow, 2).Value = txtBin
                                                                                                .Cells(NewRow, 3).Value = txtProducto
                                                                                                .Cells(NewRow, 4).Value = txtInstrumento
                                                                                                .Cells(NewRow, 5).Value = txtSegmento
                                                                                                .Cells(NewRow, 6).Value = cbMoneda
                                                                                                .Cells(NewRow, 7).Value = txtDescripcionCorta
                                                                                                .Cells(NewRow, Cool.Value = txtDescripcionLarga
                                                                                                .Cells(NewRow, 9).Value = txtAbreviación
                                                                                                .Cells(NewRow, 10).Value = cbEstatus
                                                                                                .Cells(NewRow, 11).Value = txtTotalRegsAsoc
                                                                                                .Cells(NewRow, 12).Value = txtRefSeg
                                                                                                .Cells(NewRow, 14).Value = txtSegmento2
                                                                                                .Cells(NewRow, 15).Value = cbAccountType
                                                                                                .Cells(NewRow, 18).Value = txtTriad
                                                                                                .Cells(NewRow, 19).Value = txtScore
                                                                                                .Cells(NewRow, 21).Value = txtJob
                                                                                                .Cells(NewRow, 22).Value = cmbProceso
                                                                                            End With
                                                                                            GoTo fin
                                                                                        End If
                                                                                    End If
                                                                                End If
                                                                            End If
                                                                        End If
                                                                    End If
                                                                End If
                                                            End If
                                                        End If
                                                    End If
                                                End If
                                            End If
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If

    'Call Proteger
    Exit Sub
fin:




Mi segundo problema es Al copiar un rango de columnas de un libro a otro se cierra el formulario donde ejecuto mi proyecto no se porque y me gustaria saber si hay algun modo que cuando este copiando las columnas se vallan adjuntando al final y no remplacen las que ya tengo.

'Definir objetos a utilizar
Dim wsOrigen As Excel.Worksheet, _
            wsDestino As Excel.Worksheet, _
            rngOrigen As Excel.Range, _
            rngDestino As Excel.Range
        
        'Indicar las hojas de origen y destino
        Set wsOrigen = Worksheets("CA-PRO-INS")
        Set wsDestino = Worksheets("Consolidado")
        
        'Indicar la celda de origen y destino
        Const celdaOrigen = "AH5"
        Const celdaDestino = "A9"
        
        'Inicializar los rangos de origen y destino
        Set rngOrigen = wsOrigen.Range(celdaOrigen)
        Set rngDestino = wsDestino.Range(celdaDestino)
        
        'Seleccionar rango de celdas origen
        rngOrigen.Select
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.Copy
        
        'Pegar datos en celda destino
        rngDestino.PasteSpecial xlPasteValues
        Application.CutCopyMode = False
       

tyno


Hola Jose, bien venido al foro.
Si bien toda esta explicación puede servir de gran ayuda para resolver tus problemas que planteas de todas formas lo mejor es que subas una copia de tu archivo con el formulario. Este archivo no debe pesar más 250kb por lo que quizás debas comprimirlo como ZIP (no como rar) y si aún así es muy pesado quita las Hojas que no están involucradas al formulario y puedes dejar algunos registros de ejemplo eliminando filas de los demás registros. Incluso puedes subir el archivo a dropbox o algún otro sitio de archivos y pegar el link. No olvides quitar contraseñas de Hojas o archivo. Saludos

3RESUELTO Aqui tienen el link el 13/06/14, 11:44 am

Josefran


Gracias por la bienvenida, aqui tiene el link en dropbox tenga buen dia.
cualquier cosa aqui andare todo el dia tratando de resolver mis dudas
https://www.dropbox.com/s/g69cqxfvgzw7jya/Ejemplo.zip

tyno


Hola Jose.
Mira, trata de probar modificando la linea que corresponde al ingreso de datos Job así:

.Cells(NewRow, 21).Value = txtJob*1

o bien 


.Cells(NewRow, 21).Value = Val(txtJob)


en ambos casos se fuerza el contendido del textbox para que su contenido sea tomado como valor numérico, siempre y cuando lo que se ingrese sea un número.


Con respecto a ingresar columnas de datos de manera consecutiva, no se bien como actua el código que has explicado pero te paso un archivo con una macro de ejemplo la cual agrega los datos de la columna A en la Hoja1 en la Hoja2. 
Quizás esto te sirva de referencia para adaptarlo lo que necesitas. Cualquier cosa me avisas.
Saludos
Archivos
ejemplo agregar columna de datos en otra hoja.zip
No tienes los permisos para descargar los archivos.
(11 KB)

Josefran


Gracias Tyno, de hecho no hace ni 10 min acababa de hacer lo del job... lo hice mucho mas dificil con un macro, pero utilizare el tuyo, Gracias orita verifico si con tu ejemplo me queda.
Muchas Gracias me salvaste tenia 2 dias con eso...

Josefran


En tu ejemplo los va poniendo en cada columna, de casualidad no tendras una que lo ponga en la Fila?

tyno


¿copiar los datos hacia abajo? 
Prueba de reemplazar el codigo que tienes en el archivo de ejemplo por este:

Private Sub CommandButton1_Click()
On Error Resume Next
With Sheets("Hoja2")
For a = 4 To Range("a65536").End(xlUp).Row
rw=.Range("a3:a65536").Find("").Row
.Cells(rw, 1) = Cells(a, 1)
Next a
End With
End Sub

de esta manera se agregaran todos los datos de la columna A de la Hoja1 en la columna A de la Hoja2 hacia abajo, y asi cada vez que ejecutes la macro todos los datos se agregan hacia abajo de manera consecutiva. En la columna A de la Hoja1 puedes agregar o quitar mas datos.


Saludos

Josefran


Muchas Gracias, Me sirvio una pregunta quisiera agregar de la Hoja1 columna AH, Hacia la Hoja 2 Columna A, no le logro entender bien perdona.

tyno


Hola Jose.
No me doy cuenta bien como sería lo que quieres hacer. Saludos

10RESUELTO Re: Ayuda con mis Macros de Copiar el 16/06/14, 01:39 pm

Josefran


Con el Codigo que me enviaste.
Copiar la Columuna AH desde la fila 4 de la hoja1,
Hasta la Columna A desde la fila 9 de la Hoja2
Si no es molestia y tiene skype podria mostrarle con compartir pantalla.

11RESUELTO Re: Ayuda con mis Macros de Copiar el 16/06/14, 01:56 pm

tyno


Si bien tengo skype, no me dan los tiempos para contactarnos.
Sube un archivo de ejemplo y en el mismo me indicas como tienen que quedar los resultados. Por ejemplo en la Hoja 1 agrega las columnas de datos (cualquier tipo de dato, total es solo de ejemplo) y en la Hoja 2 me muestras como quieres que quede el resultado, es decir inserta los resultados de forma manual y yo veo de reproducirlo con una macro y esta noche lo veo. Saludos

12RESUELTO Re: Ayuda con mis Macros de Copiar el 16/06/14, 02:12 pm

Josefran


Te dejo el archivo adjunto, Gracias  por toda tu ayuda de antemano.
Despues de solo me faltaria una cosa pero intentare resolverla solo, si no te molestare de nuevo, Gracias
Archivos
Copiar.xlsx
No tienes los permisos para descargar los archivos.
(12 KB)

13RESUELTO Re: Ayuda con mis Macros de Copiar el 16/06/14, 09:52 pm

tyno


Hola Jose.
Prueba el archivo de ejemplo. Saludos
Archivos
Copiar.zip
No tienes los permisos para descargar los archivos.
(21 KB)

14RESUELTO Re: Ayuda con mis Macros de Copiar el 17/06/14, 11:41 am

Josefran


Disculpa no me quedo, supongo seran por las Filas hay modo de indicarle que filas ponerles?
En la Hoja 1 quisiera tomar desde la FIla 5 y la Hoja 2 ala FIla9 ?
Te lo mando de nuevo como quisiera que quedara y disculpa por mi error..
Archivos
Copiar.xlsm
No tienes los permisos para descargar los archivos.
(20 KB)

15RESUELTO Re: Ayuda con mis Macros de Copiar el 17/06/14, 09:25 pm

tyno


Pues es muy fácil:


Private Sub CommandButton1_Click()
On Error Resume Next
With Sheets("Hoja2")
For a = 5 To Range("ah1000000").End(xlUp).Row
rw = .Range("a8:a1000000").Find("").Row
.Cells(rw, 1) = Cells(a, 34)
Next a
End With
End Sub


Saludos

16RESUELTO Re: Ayuda con mis Macros de Copiar el 18/06/14, 12:53 pm

Josefran


Perdona tyno, el ultimo codigo no hizo nada en mis hojas, ni copiar ni tirar error ni nada Razz jejej.


Private Sub CommandButton1_Click()
On Error Resume Next
With Sheets("Hoja2")
For a = 5 To Range("ah1000000").End(xlUp).Row
rw = .Range("a8:a1000000").Find("").Row
.Cells(rw, 1) = Cells(a, 34)
Next a
End With
End Sub

17RESUELTO Re: Ayuda con mis Macros de Copiar el 19/06/14, 07:44 am

tyno


Hola Jose.
El código que te he pasado es bastante básico, y considerando los formularios que has estado manejando este tema es solo cuestión de resolverlo modificando los argumentos de la macro. O sea que hay que poner un poco de voluntad y paciencia para ir probando  y equivocarse hasta dar con los resultados, y así se aprende, sino es como que se esta pretendiendo que los otros me hagan todo el trabajo, me parece ¿no?
Por cierto, he probado la última macro que te pase y funciona, copia de manera consecutiva los registros de la columna AH (Hoja1) en la Hoja 2 en la columna A, desde la fila 9.


Saludos

18RESUELTO Re: Ayuda con mis Macros de Copiar el 19/06/14, 11:14 am

Josefran


Ya lo resolvi Gracias, pero ahora tengo otro problema al Genenar el TXT me crea al final con una fila de mas, Gracias por tu tiempo.

Y perdona por pedir tanta ayuda, es mi primera ves con visualbasic. Y nunca domine bien el Excel, pero creo que ya te molesto, perdona.

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.