Excel,Visual Basic更改公式使用的范围

时间:2015-03-19 03:59:09

标签: excel excel-vba range vba

我在网上找到的以下代码,我开始调整它。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, B As Range, Inte As Range, r As Range
    Set A = Range("A:A")
    Set Inte = Intersect(A, Target)
    If Inte Is Nothing Then Exit Sub
    Application.EnableEvents = False
        For Each r In Inte
            r.Offset(-1, 1).Value = Now
        Next r
    Application.EnableEvents = True
End Sub

我真正需要改变的是代替应用于整个A列的代码,我需要它从特定单元格开始,然后应用于给定列中的每个第n个单元格。

我可以通过修改下面的语法来实现这一目标,还是需要编写新的公式?

2 个答案:

答案 0 :(得分:0)

如果我理解你的意愿

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, B As Range, Inte As Range, r As Range
    Set A = Range("B5:C15") ' "B5:C15" - range in which we want to track changes (сan change)
    Set Inte = Intersect(A, Target)
    If Inte Is Nothing Then Exit Sub
    Application.EnableEvents = False
        For Each r In Inte
            ActiveSheet.Range("E" & r.Row).Value = Now  ' "Е" - сolumn for insert the date of change (сan change)
        Next r
    Application.EnableEvents = True
End Sub

答案 1 :(得分:0)

感谢您的回复。这确实有助于澄清定义范围的一些方法。这是我想要做的更好的图片:

解决方案1: 我有点以非常低效的方式解决了它。我在电子表格上有一个重复的表格,根据需要我们只是C& P.只要每个C& P具有相同的间距,我的解决方案就是将范围改为:

设置A =范围(“A5,A10,A15,A20,A25”)然后我只添加我认为需要的增量。

显然,这不是一种理想的做法;我想知道如何对它进行编码,以便在整个A列中每隔5行进行无限远。

解决方案2: 可能比我在visual basic中更先进,但理想情况下我希望脚本在单元格中搜索特定单词,然后在下一行执行。因此,如果它在单元格A4中找到单词“当前”,它将在单元格A5上执行脚本。

如果我能做到这一点,那么如果有人弄乱了间距就没关系了。

感谢您的帮助!

相关问题