Duda VBA!

Hola, espero me puedas ayudar, tengo una macro que hace la sumatoria de la columna A en el libro A, este resultado lo tengo que copiar y pegar en la celda A1 del libro B, aclaro que yo hice un macro, que me saca la sumatoria, copia el resultado y crea el libro B, mi problema es que el macro no me esta pegando el valor que necesito y me manda como resultado #¡REF! Cuando lo reviso en el libro B. Te paso mi código:
Private Sub CommandButton1_Click()
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Range("A1").Select
Wend
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "= Sum(A:A)"
Selection.Copy
'Crea el Libro B
Workbooks.Add
   Range("A1").Select
   ActiveCell.PasteSpecial
   ActiveSheet.PasteSpecial
    ActiveWorkbook.SaveAs Filename:="macroresultado.xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
       , CreateBackup:=False
    Windows("macroresultado.xls").Activate
    Sheets("hoja1").Select
    Workbooks("macroresultado.xls").Activate
end sub

1 Respuesta

Respuesta
1
Te faltaba detallar el tipo de pegado especial que querías que realizará excel, con el código que te resalte en negritas especificas que quieres que copie sólo el valor, te ponía #REF, porque buscaba realizar la fórmula que anteriormente había definido en ese nuevo archivo.
Private Sub CommandButton1_Click()
While ActiveCell.Value <> ""
    ActiveCell.Offset(1, 0).Range("A1").Select
    Wend
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Formula = "= Sum(A:A)"
    Selection.Copy
    'Crea el Libro B
    Workbooks.Add
   Range("A1").Select
   ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
      
    ActiveWorkbook.SaveAs Filename:="macroresultado.xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
       , CreateBackup:=False
    Windows("macroresultado.xls").Activate
    Sheets("hoja1").Select
    Workbooks("macroresultado.xls").Activate
end sub
Hola hola, muchas gracias por tu respuesta funciona a la perfección, con esto prácticamente ya termine mi trabajo je je, pero tengo otra duda que significan las sentencias: Operation:=xlNone, SkipBlanks:=False, Transpose:=False ; digo solo para saber que cosa le metí al código.
Por otro lado conoces algún manual o libro donde vengan las sentencias explicadas, ¿por qué necesito que mediante un option button me active un textbox?
ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Paste:=xlPasteValues   = Copiar solo el texto, el valor
Operation:=xlNone        = No realizar operaciones en la celda.
SkipBlanks _:=False       = Eliminar los espacio en blanco en caso de que hubiera.
Transpose:=False = No Transponer, es decir al momento de pegar no cambiar filas por columnas y viceversa, esto es sobre todo para cuando lo que se va a pegar es más de una celda, en tu caso saldría sobrando.
De momento no recuerdo de algún manual, pero com siempre digo google es el mejor ayudante para encontrar información.
jajaja le pregunte a google todo eso y no me dio la respuesta que esperaba, jeje; pero ahora tuve otro problema, use ese mismo código por que necesito pegar valores distintos en el libro nuevo, osea el valor que copio en un principio se pega muy bien en la celda A1, pero cuando copio el valor de otro libro y lo pego en la celda A2, me sigue copiando el valor que puse en A1; pensé que con esas sentencias iba a quedar así, digamos como se llega a hacer con java, pero no se casi nada de VBA, ¿por eso quisiera saber como lo soluciono?
Y disculpa por estar molestando tanto
Cada valor que quieras pegar lo tienes que seleccionar primeramente, después poner la instrucción de copiar y por última indicar donde los quieres pegar
ActiveCell.Offset(0, 1).Select
Selection. Copy
Nota: Como estás trabajando en diferentes libros es importante que te muevas entre libros, o bien que especifiques al momento de copiar y pegar en que libro se encuentra la celda que quieres copiar y la celda a donde quieres pegar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas