Archive

Posts Tagged ‘Select Case’

Formato condicional más de 3 condiciones en Excel 2003

April 25, 2011 5 comments

En esta ocasión comparto una macro que permitirá a las versiones de Excel 2003 y anteriores, utilizar más de 3 opciones de formato condicional. Esto se hace mediante el constructor Select Case con el evento Change de la hoja activa.

Código:

'---------------------------------------------------------------------------------------
' Procedure : Worksheet_Change
' Date      : 24/04/2011
' Purpose   : Formato condicional con más de 3 condiciones en Excel 2003 (-)
'---------------------------------------------------------------------------------------
'
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo fin
    If Application.Intersect(Target, [A3:I21]) Is Nothing Then Exit Sub
    With ThisWorkbook.ActiveSheet
        Select Case Target
        Case .Range("K3").Value
            Target.Interior.ColorIndex = .Range("K3").Interior.ColorIndex
        Case .Range("K4").Value
            Target.Interior.ColorIndex = .Range("K4").Interior.ColorIndex
        Case .Range("K5").Value
            Target.Interior.ColorIndex = .Range("K5").Interior.ColorIndex
        Case .Range("K6").Value
            Target.Interior.ColorIndex = .Range("K6").Interior.ColorIndex
        Case .Range("K7").Value
            Target.Interior.ColorIndex = .Range("K7").Interior.ColorIndex
        Case .Range("K8").Value
            Target.Interior.ColorIndex = .Range("K8").Interior.ColorIndex
        Case .Range("K9").Value
            Target.Interior.ColorIndex = .Range("K9").Interior.ColorIndex
        Case .Range("K10").Value
            Target.Interior.ColorIndex = .Range("K10").Interior.ColorIndex
        Case .Range("K11").Value
            Target.Interior.ColorIndex = .Range("K11").Interior.ColorIndex
        Case .Range("K12").Value
            Target.Interior.ColorIndex = .Range("K12").Interior.ColorIndex
        Case Else
            Target.Interior.ColorIndex = xlColorIndexNone
        End Select
    End With
    Exit Sub
fin:
    MsgBox "Intentaste borrar más de una celda a la vez. Debes de borrar celda por celda", vbCritical, "Error de borrado"
End Sub

:: Descarga el ejemplo

Formulario Pegado especial con opciones combinables en Excel

Twittear este post Compartir en Facebook

Antes de Excel 2010 no había la manera de poder elegir combinaciones de pegado especial de datos, pero con la llegada de esa versión, el equipo de desarrollo pensó en tal necesidad. La cuestión es que ya se pueden hacer combinaciones, pero sólo de un par de opciones, de una lista de 4, lo cual lo hace realmente funcional, pero no suficiente.

Ante la necesidad de poder elegir más de una opción de pegado me di a la tarea de crear mi propio UserForm que realiza tal actividad, así danto oportunidad de poder elegir las combinaciones de mi agrado y necesidad.

Adjunto archivo de Excel para versión 2007 y 2010 con el ejemplo funcional. Con un poquito más de programación, se podrá poner la opción en el menú contextual para que lo tengamos a la mano.

Formulario en acción:

image

El botón insertado en la hoja ejecuta el siguiente código:

Private Sub CommandButton1_Click()
'Mandamos llamar al procedimiento.
Call EXCELeINFOPasteSpecial
End Sub

El código del procedimiento:

Option Private Module
Sub EXCELeINFOPasteSpecial()
'Si previamenente no se copió un rango, no se podrá continuar.
If Application.CutCopyMode = False Then
    MsgBox "No hay datos para pegar." & vbNewLine & vbNewLine & "Asegúrese de que haya utilizado Ctlr + V o Ctlr + Insert para copiar datos.", vbExclamation, "EXCELeINFO"
Else
    UserForm1.Show
End If
End Sub

El código del formulario se podrá consultar dentro del mismo archivo.

:: Descargar archivo con ejemplo.

Categories: Excel, Forms, vba Tags: , , , ,