TODAVIA PROBLEMA

26/01/2009 - 05:35 por LUIS DANNY SALAS | Informe spam
Gracias, de acuerdo con la sugerencia elimine : Windows("Libro1").Activate
y utilice:
With Workbooks.Add
"procedimiento"
End with

funciona bien, pero el libro nuevo queda abierto y ademas aparecen otros que
tambien quedan abiertos, libro 6 libro 7,libro 8

??????????

te expongo el codigo completo:

Private Sub CONCENTRADO()
Application.ScreenUpdating = False
On Error GoTo Errores
Workbooks.Add
ThisWorkbook.Activate
Range("C6:F52").Select
Selection.Copy
With Workbooks.Add

Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
Range("C6").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
Selection.FormatConditions(1).Font.ColorIndex = 2
Range("C6").Select
Selection.Copy
Range("C7:C47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("C6").Select
Selection.Copy
Range("A6:A47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("B6").Select
End With
ThisWorkbook.Activate
Range("E5").Select
Selection.Copy
With Workbooks.Add
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("C1:C3").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D6:D57").Select
Selection.NumberFormat = "0"
Range("B6").Select
ActiveWindow.DisplayHeadings = False
Application.DisplayAlerts = False
Dim respuesta As Boolean

respuesta = Application.Dialogs(xlDialogSaveWorkbook).Show

If respuesta Then
MsgBox "Se ha guardado satisfactoriamente una copia de su concentrado"
Else
MsgBox "Operación cancelada por el usuario"
End If
With ActiveWindow
.Top = 10
.Left = -20
End With
ActiveWindow.Close
Application.DisplayAlerts = True
ThisWorkbook.Activate
Range("D11").Select
Exit Sub
Errores:
Application.CutCopyMode = False
Range("D11").Select
MsgBox "Ha ocurrido un error,debes cerrar Excel y volverlo a abrir para
poder digitalizar nuevamente tu concentrado"
Exit Sub
End With
End Sub
 

Leer las respuestas

#1 LUIS DANNY SALAS
26/01/2009 - 22:01 | Informe spam
Gracias por los consejos, voy a tratar de depurar un poco estos códigos.

"Gaby" escribió en el mensaje
news:
Hola,

No soy experta en VBA y para mi es dificil seguir el código fuera de
contexto, así que con este mensaje no intento solucionar tu problema,
simplemente darte algunas guias para cuando trabajes con codigo de VBA
(consejos básicos, no soy experta)

- Siempre agrega comentarios a tu código, facilita la lectura a otras
personas, y aunque sólo tu lo utilizes, lo que ahora es muy claro para
ti, no recordaras que tratabas de hacer cuando lo veas despues de un
par de años.

- El seleccionar rangos constantemente, le resta eficiencia a tu
codigo, por ejemplo
Range("C6:F52").Select
Selection.Copy
Puede escribirse como
Range("C6:F52").Copy
Esto hará tu codigo mas eficiente, fácil de leer y mas corto.

- Siempre que se ejecuten varios comandos a un mismo objeto es
conveniente utilizar With..End With, por ejemplo:
Range("C6").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
Selection.FormatConditions(1).Font.ColorIndex = 2
Range("C6").Select
Selection.Copy
puede escribirse
With Range("C6")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
.FormatConditions(1).Font.ColorIndex = 2
.Copy
End With

Bueno, espero que esta pequeña guía sea de utilidad para ti

Saludos

Gabriela Cerra
http://excel.gabrielacerra.com


On Jan 25, 10:35 pm, "LUIS DANNY SALAS" wrote:
Gracias, de acuerdo con la sugerencia elimine : Windows("Libro1").Activate
y utilice:
With Workbooks.Add
"procedimiento"
End with

funciona bien, pero el libro nuevo queda abierto y ademas aparecen otros
que
tambien quedan abiertos, libro 6 libro 7,libro 8

??????????

te expongo el codigo completo:

Private Sub CONCENTRADO()
Application.ScreenUpdating = False
On Error GoTo Errores
Workbooks.Add
ThisWorkbook.Activate
Range("C6:F52").Select
Selection.Copy
With Workbooks.Add

Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone,
_
SkipBlanks:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
Range("C6").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
Selection.FormatConditions(1).Font.ColorIndex = 2
Range("C6").Select
Selection.Copy
Range("C7:C47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("C6").Select
Selection.Copy
Range("A6:A47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("B6").Select
End With
ThisWorkbook.Activate
Range("E5").Select
Selection.Copy
With Workbooks.Add
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("C1:C3").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D6:D57").Select
Selection.NumberFormat = "0"
Range("B6").Select
ActiveWindow.DisplayHeadings = False
Application.DisplayAlerts = False
Dim respuesta As Boolean

respuesta = Application.Dialogs(xlDialogSaveWorkbook).Show

If respuesta Then
MsgBox "Se ha guardado satisfactoriamente una copia de su concentrado"
Else
MsgBox "Operación cancelada por el usuario"
End
With ActiveWindow
.Top = 10
.Left = -20
End With
ActiveWindow.Close
Application.DisplayAlerts = True
ThisWorkbook.Activate
Range("D11").Select
Exit Sub
Errores:
Application.CutCopyMode = False
Range("D11").Select
MsgBox "Ha ocurrido un error,debes cerrar Excel y volverlo a abrir
para
poder digitalizar nuevamente tu concentrado"
Exit Sub
End With
End Sub

Preguntas similares