MS Excel 2003: vincular una celda a otra (recalculo de control)

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

MS Excel 2003: vincular una celda a otra (recalculo de control)

Este tutorial de Excel explica cómo escribir una macro para vincular una celda con otra y controlar el recálculo en Excel 2003 y versiones anteriores (con capturas de pantalla e instrucciones paso a paso).

Pregunta: En Microsoft Excel 2003/XP/2000/97, ¿hay alguna forma de vincular las celdas de una columna con las celdas de otra columna? Por ejemplo, cuando ingreso un número de nota en la columna A, necesito que aparezca un valor de fecha en la columna B (en la fila correspondiente).

Después de establecer el valor de la fecha en la columna A, no quiero que cambie el valor. (es decir: el valor de la fecha debe No Se cambia cuando se abre el archivo al día siguiente. )

R: Esto se puede hacer usando macros.

Veamos un ejemplo.

Descargue la hoja de cálculo de Excel (que se muestra a continuación)

En la hoja de cálculo denominada Hoja1, colocamos código en el evento “Cambio_hoja de trabajo” para que cada vez que cambien los datos de la columna A, se actualicen las celdas asociadas de la columna B.

Puede presionar Alt+F11 para ver el código VBA.

notas: Por ejemplo, si “inserta una columna antes de la columna A, luego la elimina”, las fechas se volverán a calcular. Así que asegúrese de que la estructura de su columna sea estática antes de confiar en la vinculación de valores de fecha.

codigo macro

El código de la macro se ve así:

Private Sub Worksheet_Change(ByVal Target As Range)

   Dim LLoop As Integer
   Dim LTargetRange1 As String
   Dim LDestRange1 As String

   LLoop = 2

   'Check first 200 rows in spreadsheet
   While LLoop <= 200
      'Link column A to B
      LTargetRange1 = "A" & CStr(LLoop)
      LDestRange1 = "B" & CStr(LLoop)

      If Not Intersect(Range(LTargetRange1), Target) Is Nothing Then
         If Len(Range(LTargetRange1).Value) > 0 Then
            Range(LDestRange1).Value = Date
         Else
            Range(LDestRange1).Value = Null
         End If
      End If

      LLoop = LLoop + 1
   Wend

End Sub