VBA:确定一周中的哪一天和时间约束并在范围内循环

VBA:确定一周中的哪一天和时间约束并在范围内循环,vba,Vba,我试图循环一个特定的范围,以确定日期+时间(每个单元格格式为dd/mm/yyyy HH:mm:ss)是否等于一周中的某一天,是否介于特定时间之间。可悲的是,我无法让它工作。你能给个建议吗 每个单元格都有不同的日期和时间,所以我猜时间=D中的每个单元格逐个循环 Sub looper() Dim Time As Date, cel As Range Time = ThisWorkbook.Sheets("Test1").Range("D1") For Ea

我试图循环一个特定的范围,以确定日期+时间(每个单元格格式为dd/mm/yyyy HH:mm:ss)是否等于一周中的某一天,是否介于特定时间之间。可悲的是,我无法让它工作。你能给个建议吗

每个单元格都有不同的日期和时间,所以我猜时间=D中的每个单元格逐个循环

Sub looper()

Dim Time As Date, cel As Range
Time = ThisWorkbook.Sheets("Test1").Range("D1")

For Each cel In Range("D1:D26")
    If IsEmpty(cel.Value) Then Exit For
        
If Weekday(ThisWorkbook.Sheets("Test1").Range("D1")) = 5 And Time < TimeValue("17:59:59") And Time > TimeValue("06:00:00") _
Then cel.Offset(0, 1).Value = "yes"

  
Next

End Sub
Sub-looper()
暗时间作为日期,cel作为范围
时间=此工作簿。工作表(“测试1”)。范围(“D1”)
对于范围内的每个cel(“D1:D26”)
如果为空(cel.Value),则退出
如果工作日(ThisWorkbook.Sheets(“Test1”)。范围(“D1”)=5,时间<时间值(“17:59:59”),时间>时间值(“06:00:00”)_
然后单元格偏移量(0,1)。Value=“是”
下一个
端接头

如果我正确理解了问题,可以按如下方式实施:

Option Explicit

Sub looper()
    Dim cel As Range
    
    Dim Time As Date, minTime As Date, maxTime As Date
    minTime = TimeSerial(6, 0, 0)
    maxTime = TimeSerial(17, 59, 59)
    
    With ThisWorkbook.Sheets("Test1")
        For Each cel In Range("D1:D26")
            If IsEmpty(cel) Then Exit For
            Time = TimeValue(cel)   'extract time
            If Weekday(cel) = 5 And Time > minTime And Time < maxTime Then
                cel.Offset(0, 1) = "yes"
            End If
        Next
    End With
End Sub
选项显式
子活套()
暗淡的cel As范围
Dim Time作为日期,minTime作为日期,maxTime作为日期
minTime=时间序列(6,0,0)
maxTime=时间序列(17、59、59)
使用此工作簿.Sheets(“Test1”)
对于范围内的每个cel(“D1:D26”)
如果是空的(cel),则退出
时间=时间值(cel)'提取时间
如果工作日(cel)=5,时间>分钟时间,时间<最大时间,则
单元偏移量(0,1)=“是”
如果结束
下一个
以
端接头

如果我正确理解问题,可以按如下方式实施:

Option Explicit

Sub looper()
    Dim cel As Range
    
    Dim Time As Date, minTime As Date, maxTime As Date
    minTime = TimeSerial(6, 0, 0)
    maxTime = TimeSerial(17, 59, 59)
    
    With ThisWorkbook.Sheets("Test1")
        For Each cel In Range("D1:D26")
            If IsEmpty(cel) Then Exit For
            Time = TimeValue(cel)   'extract time
            If Weekday(cel) = 5 And Time > minTime And Time < maxTime Then
                cel.Offset(0, 1) = "yes"
            End If
        Next
    End With
End Sub
选项显式
子活套()
暗淡的cel As范围
Dim Time作为日期,minTime作为日期,maxTime作为日期
minTime=时间序列(6,0,0)
maxTime=时间序列(17、59、59)
使用此工作簿.Sheets(“Test1”)
对于范围内的每个cel(“D1:D26”)
如果是空的(cel),则退出
时间=时间值(cel)'提取时间
如果工作日(cel)=5,时间>分钟时间,时间<最大时间,则
单元偏移量(0,1)=“是”
如果结束
下一个
以
端接头

试试这个,希望有帮助:)

子活套()

Dim Time As Date,cel As Range
对于范围内的每个cel(“D1:D26”)
时间=细胞值
如果不是空的(时间),那么
如果工作日(时间)=5,时间值(时间)TimeValue(“06:00:00”)_
然后单元格偏移量(0,1)。Value=“是”
如果结束
下一个
End Sub

试试这个,希望对你有所帮助:)

子活套()

Dim Time As Date,cel As Range
对于范围内的每个cel(“D1:D26”)
时间=细胞值
如果不是空的(时间),那么
如果工作日(时间)=5,时间值(时间)TimeValue(“06:00:00”)_
然后单元格偏移量(0,1)。Value=“是”
如果结束
下一个

结束分

精彩绝伦!太棒了!большое тебе спасибо