Cómo crear un cronograma de proyecto con "Hacer clic y arrastrar" en Excel

El siguiente artículo muestra cómo marcar e interrogar un calendario con el ratón. Marcar e interrogar un calendario con el ratón

* En el mundo real, abriríamos un formulario para leer y escribir entradas significativas en el diario en una base de datos. Este ejercicio simplemente revela la mecánica de right_clicking y encuentra los detalles de la hoja de trabajo.

Antes de comenzar, algunas palabras de explicación sobre la hoja de cálculo, un modelo de trabajo del cual se puede encontrar aquí.Algunas palabras de explicación sobre la hoja de cálculo

El Proceso

Hacer clic en una celda dentro de la cuadrícula resaltará esa celda y cambiará su valor. Hacer clic y arrastrar resaltará un rango y cambiará sus valores. Si una celda está poblada, se borrará, de lo contrario se completará, en este caso con un “*”.

Por el contrario, un right_click es una solicitud de información de la celda seleccionada.

Básicamente, se utilizan dos eventos, junto con varios módulos.

  • Hoja de trabajo_SelecciónCambio que se llama cuando se selecciona una celda o celdas.
  • Hoja de trabajo_Antes de hacer clic derecho que se llama con el botón derecho del ratón.

El problema

Hacer clic derecho en una celda también constituye una selección, lo que activa SelecciónCambiar. Tendremos que dejar que ese evento siga su curso, limpiando la celda seleccionada antes de que ceda el control al AntesDerechoClick, cuando repoblaremos la celda despejada. Pero esta acción provocará la SelecciónCambiada evento de nuevo, que debe evitarse para borrarlo una vez más.

Esto lo haremos con una bandera booleana llamada blnLoading.

Los eventos

Ingrese lo siguiente en la ventana de código detrás de la hoja de trabajo (es decir, no en un módulo).

Opción Explicit Dim blnLoading As Boolean Dim sPhase As String Dim currCellValue As String Dim dDate As Date Private Sub Worksheet_SelectionChange (ByVal Target As Range) Si ActiveCell.Row> 14 y ActiveCell.Row <25 Entonces si ActiveCell.Column> 4 Y ActiveCell.Column <47 Entonces 'la selección es válida en caso de error Reanudar Siguiente currCellValue = Target.Value 'obtenga el tarobtener valor de (ByVal Target As Range) Si blnLoading = True Entonces 'un valor de True forzará una salida de este evento blnLoading = False Exit Sub End If sPhase = Cells (ActiveCell.Row, 1) If sPhase = "" Entonces Salga de Sub si ActiveCell = " * "Entonces 'si la celda está poblada, borre el rango seleccionado Llamar a ClearRange Llamar a Desbloquear Calendario Else Llamar a PopulateRange End If Llamar al Rango de RedrawCells (" A1 "). Seleccione' revivir el evento SelectionChange cambiando la selección. Exit Sub End If End If End Sub Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) If currCellValue = "*" Then 'recogido por el evento anterior ANTES de borrarlo; 'Esto significa que esta es una entrada de diario válida con detalles. blnLoading = True 'esto evitará que se ejecute el evento SelectionChange (arriba).
        Target.Select 'currCell = Target.Address 'Range (currCell) .Select

            Target.Value = "*" 'restablece el valor de la celda, ya que SelectionChange lo ha borrado Llamar a PopulateRange dDate = Cells (13, ActiveCell.Column) sPhase = Cells (ActiveCell.Row, 1) MsgBox dDate & "-" & sPhase Cancel = True 'suprime los menús de clic derecho estándar de Excel End If Range ("A1"). Seleccione blnLoading = False End Sub

Esto se encarga de los dos eventos.

Código referenciado

Agregue los siguientes rangos de población y despoblamiento al código:

Sub ClearRange () Selection.FormulaR1C1 = "" Con Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With End Sub Sub PopulateRange () Selection.FormulaR1C1 = "*" Con Selection.Interior .Pattern = xlSolid. PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight2 .TintAndShade = 0.799981688894314 .PatternTintAndShade = 0 End With End Sub

Mantenimiento de cuadrículas

Inserte un módulo en la aplicación. Agregue el siguiente código para mantener el aspecto de la cuadrícula. Esto fue copiado de la grabadora de macros, redundancias y todo.

Option Sub UnblockCalendar explícito () Selection.FormulaR1C1 = "" Con Selection Selection.Borders (xlDiagonalDown) .LineStyle = xlNone Selection.Borders (xlDiagonalUp) .LineStyle = xlNone Selection.Borders (xlEdgeLeft) .LineStyle. .LineStyle = xlNone Selection.Borders (xlEdgeBottom) .LineStyle = xlNone Selection.Borders (xlEdgeRight) .LineStyle = xlNone Selection.Borders (xlInsideVertical) .LineStyle = xlNone Selection.Borders (xlInside SublineraHorizontal) () Selection.Borders (xlDiagonalDown) .LineStyle = xlNone Selection.Borders (xlDiagonalUp) .LineStyle = xlNone With Selection.Borders (xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Hinight End = 0. Bordes (xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0.Weight = xlThin End With With Selection.Borders (xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With Selection.Borders (xlEdgeRight) .LineStyle = xlContinuousShadeTolor = 0Index = xlContinuousShadeTolor = 0. .Weight = xlThin End With With Selection.Borders (xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With Selection.Borders (xlInsideHorizontal) .LineStyle = xlIndexShade 0 .ColorIndex = XNUMX. .Peso = xl Extremo delgado con extremo secundario

Protección contra catástrofes

Cualquiera que desarrolle mucho en Excel sabrá que las hojas de cálculo xlsm complejas pueden fallar de vez en cuando, corrompiendo el documento abierto. En más casos de los que cabría esperar, las rutinas de recuperación de Excel no pueden recuperar el libro dañado. Si no hay copias de seguridad, el trabajo realizado es lost. Esto se puede prevenir con herramientas diseñadas para realizar Corrección de Excel.

Introducción del autor:

Felix Hooker es un experto en recuperación de datos en DataNumen, Inc., que es el líder mundial en tecnologías de recuperación de datos, incluyendo rar reparación y productos de software de recuperación de sql. Para más información visite www.datanumen.com

Los comentarios están cerrados.