2015-03-19 85 views
0

以下代码我在网上找到,我开始适应它。Excel,Visual Basic更改公式使用的范围

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个电池单元后,在给定的列。

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

+0

它应该从哪个单元开始? – 2015-03-19 12:59:33

+0

@JYgor我同意你[excel-vba],但提及[vba]标签的提取* ...也使用适当的标签:excel-vba ... * – pnuts 2015-03-20 00:49:39

回答

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 
0

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

解决方案1: 我有种以非常低效的方式解决它。我在电子表格上有一个重复表格,根据需要只需C & P.我的解决方案通过将范围更改为:

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

显然这不是一个可取的做法;我想知道如何对它进行编码,因此它会在整个A列中每隔5行进行一次无穷大的编码。

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

如果我能做到这一点,那么如果有人搞砸了间距也无所谓。

我感谢您的帮助!