Necesita ayuda para una macro

Hola a todos:

Mi problema es que he creado un formulario con excel y he creado una macro para que me copie los datos del formulario y los pase a otra hoja donde se valla insertando en una fila a modo de resumen, la macro tb borra todos los datos del formulario para poder ir metiendo otros datos. El problema lo tengo con las celdas que contienen números pk éstos no me los copia bien, los texto si pero los números o las celdas con formulas no

la macro es la siguiente:

Sheets("FACT 01").Select
Range("B2").Select
Selection.Copy
Sheets("RESUMEN").Select
Range("A2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("B3:C3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESUMEN").Select
Range("B2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("B4").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESUMEN").Select
Range("D2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("B5").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESUMEN").Select
Range("E2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("B6").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESUMEN").Select
Range("F2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("J20").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESUMEN").Select
Range("G2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("J21").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESUMEN").Select
Range("H2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("J22").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESUMEN").Select
Range("I2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("J23").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESUMEN").Select
Range("J2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("J24").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESUMEN").Select
Range("K2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("J25").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESUMEN").Select
Range("L2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("J26").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESUMEN").Select
Range("M2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("J27").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESUMEN").Select
Range("N2").Select
Selection.Insert Shift:=xlDown
Sheets("FACT 01").Select
Range("B2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ""
Range("B3:C3").Select
ActiveCell.FormulaR1C1 = ""
Range("B4").Select
ActiveCell.FormulaR1C1 = ""
Range("B5").Select
ActiveCell.FormulaR1C1 = ""
Range("B6").Select
ActiveCell.FormulaR1C1 = ""
Range("F10").Select
ActiveCell.FormulaR1C1 = ""
Range("F11").Select
ActiveCell.FormulaR1C1 = ""
Range("F12").Select
ActiveCell.FormulaR1C1 = ""
Range("F13").Select
ActiveCell.FormulaR1C1 = ""
Range("F14").Select
ActiveCell.FormulaR1C1 = ""
Range("F15").Select
ActiveCell.FormulaR1C1 = ""
Range("F16").Select
ActiveCell.FormulaR1C1 = ""
Range("F17").Select
ActiveCell.FormulaR1C1 = ""
Range("F18").Select
ActiveCell.FormulaR1C1 = ""
Range("A19").Select
ActiveCell.FormulaR1C1 = "0"
Range("C20").Select
ActiveCell.FormulaR1C1 = "0"
Range("D25").Select
ActiveCell.FormulaR1C1 = "0"
Range("D27").Select
ActiveCell.FormulaR1C1 = "0"
Range("D28").Select
End Sub

las celdas B2:B6 SON TEXTO

1 respuesta

Respuesta
1

Te recuerdo que los controles TextBox (y algunos más) guardan su información como 'texto' y así se vuelcan en la hoja.

Para un correcto volcado de datos desde controles a celdas, debes recurrir a las funciones de conversión como Val, Cdbl, CDate (para fechas) y algunas más.

Ej:

Range("B2") = Val(TextBox1)

Podes encontrar otras funciones en la Ayuda del Editor de Excel.

(*) En la sección Descargas de mi sitio podes encontrar algunos ejemplos (de descarga gratuita) que te ayudarán a reducir escritura de código. Por ej algunos de los Ejemplos 3. para tu caso no necesitas más que unas pocas y sencillas instrucciones.

gracias por la respuesta pero no se mucho de Basic, la macro la creo con el programador ,grabar macro,

No se si te importaría explicármelo de una forma más sencilla

me gustaría poder enviarte la hoja para que entendieses mejor mi problema , si me dices un correo o una forma de subirlo aquí, te lo mandaría

Muchas gracias de antemano

Lo de 'optimizar' el código es solo una sugerencia y podes encontrar ejemplos en la sección descargas de mi sitio y también en la sección Macros (no necesitas registrarte ni nada).

La grabadora te dá la base y yo te doy los tips para mejorarlo y hacerlo más fácil de comprender.

Por ej, no hace falta seleccionar la celda para limpiarla o moverle algún valor. Las 8 líneas para mover valor 0 podés reducirlas así:

Range("A19") = 0
Range("C20")=0

Range("D25")=0

Range("D27")=0

Incluso algo más sencillo, por ej en las de limpieza, en lugar de ir a cada celda se reduce así:

Range("F10:F18") = ""

Como mencionabas un formulario se me hizo que podrías tener controles del tipo textbox,,, Escribime las instrucciones donde movés valores y que según tus comentarios: celdas que contienen números pk éstos no me los copia bien,

Podés tomar nota del correo desde mi sitio pero primero ajustá la rutina con estos cambios que te menciono así se me hace más rápida la lectura de tu código ;)

<h2> </h2>

Buenos días:

he simplificado la macro a una sola acción , que que me copie una celda de una hoja y me la inserte en la hoja 2,

Range("B2").Select
Selection.Copy
Sheets("RESUMEN").Select
Range("A2").Select
Selection.Insert Shift:=xlDown

y en definitiva lo que quiero que me haga es lo mismo pero que en lugar de copiar una celda donde aparece texto , otra donde hay números, utilizando esta macro me da error al copiar datos numéricos.

Espero haberte simplificado la pregunta

Muchas gracias por todo

Usala como te la envié en tu libro, que funciona perfecto. Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas