En todo proceso de diseño de una hoja en Excel es prácticamente inevitable tener que reordenar rangos (filas, columna o celdas).
Por lo general nos basta con arrastrar el rango a la posición deseada. Pero en no pocos casos debemos intercambiar posiciones, poner un rango en lugar del otro.
La técnica más común es usar Copiar (o Cortar) y Pegar, usando una ubicación transitoria, o arrastrando una de las columnas (o filas o celdas) a un área "libre" de la hoja y moviendo luego los objetos a la posición deseada
Una forma más eficiente es seleccionar uno de los rangos y manteniendo apretada la tecla Mayúsculas (Shift), apuntar con el mouse al borde indicado y arrastrar el rango a la posición del rango a intercambiar
Lo mismo puede hacer con celdas o filas.
En ciertas situaciones estas técnicas pueden ser engorrosas, en particular cuando queremos realizar el intercambio entre celdas que se encuentran en distintas columnas. Por ejemplo, si tenemos una lista de turnos de trabajo, donde los operarios piden con cierta frecuencia cambiar su turno:
Con un poco de código Vba (macros) podemos crear una herramienta útil para intercambiar celdas con facilidad:
Sub InterCambiarCeldas()
Dim rngCell2 As Range
Dim cellTemp As String
'verificar que se haya elegido solo una celda
If Selection.Count > 1 Then
MsgBox "Debe elegirse solo una celda", vbCritical
Exit Sub
End If
'verificar que la celda contenga un valor
If Len(ActiveCell) = 0 Then
MsgBox "Celda vacia", vbExclamation
Exit Sub
End If
On Error GoTo errCancel
Set rngCell2 = Application.InputBox(prompt:="Elija la celda a intercambiar", _
Title:="Celda a intercambiar", Type:=8)
If rngCell2.Count <> 1 Then
MsgBox "Debe elegirse solo una celda", vbCritical
Exit Sub
End If
If Len(rngCell2) = 0 Then
MsgBox "La celda elegida esta vacia", vbExclamation
Exit Sub
End If
cellTemp = ActiveCell.Value
ActiveCell.Value = rngCell2.Value
rngCell2 = cellTemp
Exit Sub
errCancel:
If Err.Number = 424 Then
MsgBox "Operacion cancelada", vbExclamation
Exit Sub
End If
End Sub
El código va en un módulo común del editor de Vba, y para que podamos usarlo en todo cuaderno abierto lo guardamos en un módulo del cuaderno Personal.xls(m). Par apoder usar la macro con facilidad le asignamos un atajo de teclado
o un ícono en la barra de acceso rápido
Con este código todo lo que tenemos que hacer es seleccionar la primera celda a intercambiar, apretar Ctrl-Mayúsculas-Enter para accionar la macro, elegir la segunda celda y apretar Ok. Si elegimos más de una celda o una celda vacía, aparece un aviso y el código termina; lo mismo si el usuario aprieta el botón Cancelar del al forma
No hay comentarios.:
Publicar un comentario
Nota: sólo los miembros de este blog pueden publicar comentarios.