Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/11/2011, 15:48
JoaoM
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 8 meses
Puntos: 39
Respuesta: macro excel imprimir seleccion

Tengo este codigo en un Modulo, ve si te sirve
'''''''''''''''''''''''''''''''''''''''''''''''''
'imprimir seleccion de celdas
Sub PrintSelectedCells()
' impresion de celdas seleccionadas, utilizar un menú o un botón de barra de herramientas
Dim aCount As Integer, cCount As Integer, rCount As Integer
Dim i As Integer, j As Long, aRange As String
Dim rHeight() As Single, cWidth() As Single
Dim AWB As Workbook, NWB As Workbook
If UCase(TypeName(ActiveSheet)) <> "WORKSHEET" Then Exit Sub
'útil sólo en hojas de cálculo
aCount = Selection.Areas.Count
If aCount = 0 Then Exit Sub ' no hay celdas seleccionadas
cCount = Selection.Areas(1).Cells.Count
If aCount > 1 Then ' múltiples áreas seleccionadas
Application.ScreenUpdating = False
Application.StatusBar = "Printing " & aCount & " selected areas..."
Set AWB = ActiveWorkbook
rCount = ActiveSheet.Cells.SpecialCells(xlLastCell).Row
cCount = ActiveSheet.Cells.SpecialCells(xlLastCell).Column
ReDim rHeight(rCount)
ReDim cWidth(cCount)
For i = 1 To rCount
' encontrar el alto de fila de cada fila de la selección
rHeight(i) = Rows(i).RowHeight
Next i
For i = 1 To cCount
' encontrar el ancho de columna de cada columna en la selección
cWidth(i) = Columns(i).ColumnWidth
Next i
Set NWB = Workbooks.Add ' crear nuevo libro
For i = 1 To rCount ' Alto de fila del conjunto
Rows(i).RowHeight = rHeight(i)
Next i
For i = 1 To cCount ' anchos de columna del conjunto
Columns(i).ColumnWidth = cWidth(i)
Next i
For i = 1 To aCount
AWB.Activate
aRange = Selection.Areas(i).Address
' dirección de rango
Range(aRange).Copy ' copiar el rango
NWB.Activate
With Range(aRange) ' pega los valores y formatos
.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
.PasteSpecial Paste:=xlFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End With
Application.CutCopyMode = False
Next i
NWB.PrintOut
NWB.Close False ' Cierre el libro temporal sin guardar los cambios
Application.StatusBar = False
AWB.Activate
Set AWB = Nothing
Set NWB = Nothing
Else
If cCount < 10 Then ' menos de 10 celdas seleccionadas
If MsgBox(" ¿Está seguro de que desea imprimir " & _
cCount & " celda(s) seleccionada(s) ?", _
vbQuestion + vbYesNo, "Imprimir celdas seleccionadas") = vbNo Then Exit Sub
End If
Selection.PrintOut
End If
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''
No es mio, bajado de la WEB porque de macros o programacion me muero yo y mi familia queda pidiendo limosna jejejejej pero, si te sirve bien, si puedes adaptarlo bien, si no te sirve, echalo a la basura.

Ahora te pregunto como hacer para que al marcar el checkbox 2, desmarque automaticamente el 1 o el que este marcado

Tengo el CheckBox 3 marcado, marco el CheckBox 6, al marcar el 6, desmarcar el 3 y demas que eventualmente pueda estar marcado MENOS, el 3, ¿como hacer? estilo ImputBox.

Tambien puedo preguntar; ¿Puedo usar ImputBox en ves de Checkbox? ¿con el mismo codigo?

Última edición por JoaoM; 18/11/2011 a las 15:56