将修复单元引用更改为动态引用

时间:2015-05-11 08:53:47

标签: excel vba excel-vba

自从我编写VBA以来,这已经很久了,所以大部分能力都存在,但非常尘埃。我设法创建了以下代码。

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. 的列中
  3. 没有编码可以实现吗? (例如,当Ax改变时,在Bx中设置日期。)

2 个答案:

答案 0 :(得分:3)

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 :(得分:1)

  1. 您只需使用Cells或类似的内容:

    Cells(Target.Row, HazaaColumn)

  2. HazaaColumn在这里列出你的专栏" Hazaa"您需要先在代码中设置扫描标题(我经常这样做是为了让我的程序更灵活,避免列更改出错)

    或使用范围:

    Range(ColLet(HazaaColumn) & Target.Row)
    

    使用自定义功能:

    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更新的参考表