Pequeña ayuda con un par de macros

12/05/2005 - 11:18 por Mukelemulembe | Informe spam
Hola a todos!

Tengo un par de macros que les faltan un par de chorraditas pero no sé
cómo se hacen.

En esta primera macro formateo los bordes del área seleccionada con un
formato personalizado pero si dicha área no tiene más de una fila y una
columna me sale un mensaje de error. ¿Qué tengo que variar para que no
aparezca?

Sub Bordes()
'
' Bordes Macro
' Macro grabada el 10/05/2005 por usuario
'
' Acceso directo: CTRL+a
'
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlHairline
.ColorIndex = xlAutomatic
End With
End Sub

Esta segunda macro sirve para eliminar las columnas que tengan valor cero
de la celda seleccionada de un autofiltro. La cuestión es que cada vez que
la utilizo el control+Fin se me queda donde estaba antes de eliminar las
filas. ¿Qué tengo que cambiar para que el Crtl+Fin se quede donde acaba la
hoja?

Sub LimpiarFilasCero()
'
' LimpiarFilasCero Macro
' Macro grabada el 10/05/2005 por usuario

' Acceso directo: CTRL+l
'
Selection.AutoFilter Field:=2, Criteria1:="0"
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
ActiveCell.Offset(0, -1).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(2, 0).Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.EntireRow.Delete
Selection.AutoFilter Field:=2
ActiveCell.SpecialCells(xlLastCell).Select
End Sub

Gracias de antemano y un saludo,

Joel.
 

Leer las respuestas

#1 Fernando Arroyo
12/05/2005 - 11:37 | Informe spam
"Joel" escribió en el mensaje news:%
Hola a todos!

Tengo un par de macros que les faltan un par de chorraditas pero no sé
cómo se hacen.

En esta primera macro formateo los bordes del área seleccionada con un
formato personalizado pero si dicha área no tiene más de una fila y una
columna me sale un mensaje de error. ¿Qué tengo que variar para que no
aparezca?

Sub Bordes()
'
' Bordes Macro
' Macro grabada el 10/05/2005 por usuario
'
' Acceso directo: CTRL+a
'
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlHairline
.ColorIndex = xlAutomatic
End With
End Sub




Mira si te sirve:

Sub Bordes()
'
' Bordes Macro
' Macro grabada el 10/05/2005 por usuario
'
' Acceso directo: CTRL+a
'
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
If Selection.Columns.Count > 1 Then
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
If Selection.Rows.Count > 1 Then
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlHairline
.ColorIndex = xlAutomatic
End With
End If
End Sub


Esta segunda macro sirve para eliminar las columnas que tengan valor cero
de la celda seleccionada de un autofiltro. La cuestión es que cada vez que
la utilizo el control+Fin se me queda donde estaba antes de eliminar las
filas. ¿Qué tengo que cambiar para que el Crtl+Fin se quede donde acaba la
hoja?

Sub LimpiarFilasCero()
'
' LimpiarFilasCero Macro
' Macro grabada el 10/05/2005 por usuario

' Acceso directo: CTRL+l
'
Selection.AutoFilter Field:=2, Criteria1:="0"
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
ActiveCell.Offset(0, -1).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(2, 0).Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.EntireRow.Delete
Selection.AutoFilter Field:=2
ActiveCell.SpecialCells(xlLastCell).Select
End Sub

Gracias de antemano y un saludo,

Joel.




No estoy completamente seguro (no puedo probarlo porque no sé cómo están dispuestos los datos en la hoja), pero prueba poniendo la instrucción

ActiveSheet.UsedRange

justo antes de

ActiveCell.SpecialCells(xlLastCell).Select

Un saludo.


Fernando Arroyo
MS MVP - Excel

Preguntas similares