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.]

CARLOS CARNERO


Buenas a todos: Ante todo felicitar por tan excelente foro que contribuye mucho para usuarios como yo, ávidos de aprender cada día. Tengo este código que hace que desde la hoja “Formulario_pantalla”copie algunas celdas y rango a otra hoja llamada “Kardex”.  En realidad lo hace todo bien a excepción del copiado de la celda AJ5 (=TEXTO(AF3,"000000") de la primera hoja mencionada  a la otra hoja a partir de la celda A4 donde aparece el icono de advertencia “El número de esta celda tiene formato de texto o va precedido por un apóstrofo” y luego manualmente tengo que convertir en número. Entonces por favor necesito el código que complemente esta tarea.
Gracias,
Carlos Carnero Gálvez
 
Private Sub CommandButton3_Click()
Dim I As Range
Dim RowI, ColI, LastRow As Long
Dim NumRow As Byte
 
Application.ScreenUpdating = False
 
If Range("AA33") <> "" Then
    Set I = Range("AA33")
    RowI = I.Row
    ColI = I.Column
    If Range("AA34") <> "" Then
        LastRow = Cells(RowI, ColI).End(xlDown).Row
        NumRow = LastRow - RowI + 1
    Else
        LastRow = 33
        NumRow = LastRow - RowI + 1
    End If
    Worksheets("kardex").Activate
        With Worksheets("kardex")
            For NumRowAdd = 1 To NumRow
                .Range("A4").EntireRow.Insert
                .Range("H5:R5").Copy
                .Range("H4:R4").PasteSpecial xlPasteFormulas
                .Range("A5:R5").Copy
                .Range("A4:R4").PasteSpecial Paste:=xlPasteFormats
                Application.CutCopyMode = False
                .Rows(4).EntireRow.AutoFit
               
                .Cells(4, 6) = Worksheets("Formulario_pantalla").Cells(LastRow, ColI)
                .Cells(4, 7) = Worksheets("Formulario_pantalla").Cells(LastRow, ColI + 1)
                .Cells(4, 1) = Worksheets("Formulario_pantalla").Range("AJ5")
                .Cells(4, 2) = Worksheets("Formulario_pantalla").Range("AA3")
                .Cells(4, 4) = Worksheets("Formulario_pantalla").Range("AB3")
                .Cells(4, 5) = Worksheets("Formulario_pantalla").Range("AC3")
                .Cells(4, 3) = Worksheets("Formulario_pantalla").Range("AJ9")
                LastRow = LastRow - 1
            Next
            .Range("A1").Activate
        End With
End If
With Worksheets("Formulario_pantalla")
    .Range("AE9:AF9").ClearContents
    .Range("B6:B15").ClearContents
    .Range("AE11:AF11").ClearContents
    .Range("AA33:AB47").ClearContents
    .Range("J51:P100").ClearContents
    .Range("AG3:AH3").ClearContents
End With
End Sub
Archivos
20150222 Convertir en número sólo en una columna.xls
No tienes los permisos para descargar los archivos.
(174 KB)

Igtelo


Hola Carlos.

A tu código no necesitas modificar ni complementar, dices:


"En realidad lo hace todo bien a excepción del copiado de la celda AJ5 (=TEXTO(AF3,"000000") de la primera hoja "

En la celda AJ5 le estás diciendo que convierta a texto y como tal te lo pasa, no como valor.

Quita TEXTO y listo, sólo debes dejar: =AF3

También verifica tus formatos de celda y dále el formato adecuado.

CARLOS CARNERO


Estimado Igtelo buenos días: En realidad originalmente la formula que se encuentra AF3 estaba en AJ5, pero que sucedía: que al copiar este valor númerico (que es el correlativo de una solicitud en la hoja Formulario_pantalla que podría tener 1 o 15 registros como máximo (AA34:AB47), este valor al copiarse a la hoja "Kardex" lo pegaba como formula (en las demás columnas de la hoja Kardex es correcto que lo copie como tal, pero no en la columna A), es decir el valor númerico se convertía por decir o como ejemplo, si la solicitud N° 00005 tenía 3 registros en el kardex se reflejaba en la A4 (00005), A5 (00006) y A6 (00007), cuando los tres tendrían que haber sido N° 00005, es la razón que decidi aplicar la formula =TEXTO; por ello que acudo a ustedes conocedores envidiables de esta materia, para que por favor me auxilien ya que le he dado muchas vueltas para encontrar la solución.


Gracias,


Carlos

Igtelo


Que tal Carlos.

Prueba con esto, no afectamos tu código sólo agregamos una línea.

Crea un módulo y pegas:
Sub QuitaTexto()
'Convierte texto a valor

Worksheets("Kardex").Activate
    [a2] = 1: [a2].Copy
    [A4:A65000].PasteSpecial xlAll, 4
    Application.CutCopyMode = False
    [a2].Clear: [A4].Select
End Sub

Y en tu código después de End IF agrega QuitaTexto.
           Next
            .Range("A1").Activate
        End With
End If
QuitaTexto    '<==

CARLOS CARNERO


Very Happy Very Happy Very Happy Estimado Igtelo estupendo!!!, ... realmente muy agradecido por tu generosidad en el tiempo dedicado. Una vez más, muchas gracias.

Saludos desde el Perú,

Carlos Carnero Gálvez

CARLOS CARNERO


Estimado Igtelo sólo un detalle por un tema de estética: Revisando observo que en las filas que no encuentra datos a la derecha los rellena con "0" hacia abajo. ¿Se podría delimitar esto?

Adicionalmente disculpa que aproveche de este topic, en el rango AI33:AI47 del “Formulario_pantalla”, donde se encuentra una condicional que muestra si un documento se encuentra o no disponible, cuando indique en el segundo caso se pueda impedir ejecutar esta macro del botón “SOLICITAR” y que aparezca un mensaje sobre lo mismo,   “No disponible, intente solo con los disponibles”.
 
Gracias y saludos desde el Perú,
 
Carlos

Igtelo


Hola Carlos.

Si te refieres a que en la columna "A" pone muchos ceros, se debe a que el rango está de A4:A65000, cambia a solo los 15 registros que manejas, es decir: A4:A19.

De esta forma también el archivo no se hace pesado, los ceros demás incrementa un resto el peso del archivo.

Para lo del mensaje, abre una nueva pregunta sino se mezclan los temas y quien busca ya no lee por hacerse largo; esto lo hacemos para quien busque encuentre rápido información y además otros podrán contestar.

CARLOS CARNERO


Hola Igtelo: claro eso sería si el rango fuera fijo, pero sucede que esto se va incrementando de acuerdo al requerimiento, pero siempre va hacer desde $A$4:A"n(filas)".

Saludos y una vez más gracias por tu atención.

Carlos

Igtelo


Carlos:

Creo que no le estás entendiendo. Siempre va a ser de A4 a A19 NO a "n" filas.
Cuando ingresas tus datos siempre lo hace desde A4 y como son 15 registros máximo, entonce: 4+15= 19.

Si incrementas tus registros a ingresar, también modifica el rango.
Espero ya quede claro.

CARLOS CARNERO


Disculpa Igtelo, que tonto he sido. Embarassed Embarassed Embarassed

Gracias,

Carlos

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.