使用公式作为do while循环中的条件

时间:2013-04-24 21:13:35

标签: vba loops while-loop

我有一个包含时间值的列:

05:13:32
05:13:32
05:13:32
05:13:32
05:13:33
05:13:33
05:13:34
05:13:34
05:13:35
05:13:35
05:13:36
05:13:36
05:13:36
05:13:37
05:13:37
05:13:38
05:13:38
05:13:39
05:13:39

这些值位于C列。

现在:第一点是我开始寻找下一个比第一个值多2秒的值,这意味着我会找到05:13:34。

我编写了这段代码,但它不起作用,因为Find函数(What:=)不接受我声明为x= Activecell.Value + "00:00:2"的变量

Sub sekundenfinder2()
    Dim sekundo2 As Range
    Dim x as Integer 
    Range("C153").Select  
    ' //// Here is the Point where I begin to go the colomn down and look for the next value 

    Selection.Activate
    Set sekundo2 = Range("C:C").Find(What:="x", After:=ActiveCell)
    sekundo2.Select
End Sub

第二个问题:

Activecell.Value给出值0,21 .......,这意味着Excel将值从时间转换为数字,但我希望以“00:00”的格式保留时间: 00" 。我尝试将格式更改为时间,但仍将其更改为数字。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

  1. 使用DateAdd添加时间
  2. 当您在引号内使用x时,它不会保留为变量,而是保留为字符串。
  3. x声明为Date而不是Integer
  4. 这是你在尝试什么?我假设数据来自C1以及C105:13:32

    Sub sekundenfinder2()
        Dim sekundo2 As Range
        Dim x As Date
    
        x = DateAdd("s", 2, Range("C1").Value)
    
        Set sekundo2 = Range("C:C").Find(What:=x)
    
        If Not sekundo2 Is Nothing Then sekundo2.Select
    End Sub
    

    enter image description here