将修订单元格引用更改为dynamic引用

自从我编码VBA以来,已经过了很多年了,所以大部分的能力都在这里,但是非常的尘土飞扬。 我已经设法创build下面的代码。

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = Range("Resource").Column Then Target.Offset(0, 1).Value = Date End If End Sub 

这是非常有用的,因为我们希望影响第二列,当第一列发生变化时。 这是一个限制,所以我的问题是双重的。

  1. 如何引用目标行中的单元格,但名为“Hazaa”的列?
  2. 没有编码可以实现吗? (例如,当Ax改变时在Bx中设置date。)

1 – 这是一个例子:

 Private Sub Worksheet_Change(ByVal Target As Range) MsgBox ActiveSheet.Cells(Target.Row, Range("Hazaa").Column).Value End Sub 

2 – 如果我理解正确,你可以使用这个公式,而不需要VBA。

 =IF(AX1=BX1,TEXT(NOW(),"dd/mm/yyyy"),"") 
  1. 你只需要使用Cells或类似的东西:

    Cells(Target.Row, HazaaColumn)

HazaaColumn在这里是你需要在代码中用你的头文件进行扫描的“Hazaa”列的编号(我常常这样做是为了使我的程序更灵活,避免列更改时出现错误)

或者与范围:

 Range(ColLet(HazaaColumn) & Target.Row) 

使用自定义function:

 Public Function ColLet(x As Integer) As String With ActiveSheet.Columns(x) ColLet = Left(.Address(False, False), InStr(.Address(False, False), ":") - 1) End With End Function 
  1. 如果没有VBA, 您将无法检测到更改 ,因为您必须检测该事件,或者需要使用VBA更新参考表