Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba excel中的数据逻辑_Vba_Date_Excel - Fatal编程技术网

Vba excel中的数据逻辑

Vba excel中的数据逻辑,vba,date,excel,Vba,Date,Excel,我正在尝试创建一个自动电子表格,它可以每周更改日期,但也可以提前两周 所以这是一个时间表,老师可以在这里预订房间。在顶部,它显示了他们预订的周数,例如,它会显示 从2015年3月30日开始的一周,在其他表单上,它在前一周的时间基础上增加了7天,以便在其他表单上显示提前2周 我想创建一些逻辑,这样当第1周结束时,我会有一个日期变量来检查第1周是否结束,然后将第1周设置为第3周后的第7天,但根据我当前的设置,将第2周和第3周向前推一周,这是我不想要的 你能帮我弄清楚需要什么样的逻辑才能让它工作吗 S

我正在尝试创建一个自动电子表格,它可以每周更改日期,但也可以提前两周

所以这是一个时间表,老师可以在这里预订房间。在顶部,它显示了他们预订的周数,例如,它会显示 从2015年3月30日开始的一周,在其他表单上,它在前一周的时间基础上增加了7天,以便在其他表单上显示提前2周

我想创建一些逻辑,这样当第1周结束时,我会有一个日期变量来检查第1周是否结束,然后将第1周设置为第3周后的第7天,但根据我当前的设置,将第2周和第3周向前推一周,这是我不想要的

你能帮我弄清楚需要什么样的逻辑才能让它工作吗

Sub SetDate()
Dim Week1 As Date
Dim Week2 As Date
Dim Week3 As Date
Dim Week4 As Date


Week1 = DateValue("30 / 3 / 2015")
Week2 = DateAdd("d", 7, Week1)
Week3 = DateAdd("d", 7, Week2)
Week4 = DateAdd("d", 7, Week3)

Worksheets("Week1").Range("B4").Value = Week1
Worksheets("Week2").Range("B4").Value = Week2
Worksheets("Week3").Range("B4").Value = Week3

End Sub

我不确定我是否正确理解了这个问题,但也许是这样的

基本上,我们使用您的原始日期设置日期,然后检查是否有日期在该时间之前-如果是,我们将其递增,然后再次检查。这样,如果我们需要循环几个星期,它会一直循环直到它们都是最新的

请试一试,如果这不是你需要的,请告诉我,我会帮你解决

我通过将日期设置为2015年3月30日、2015年4月6日和2015年4月13日来测试它

第一周变为2015年4月20日,其他周保持不变(我认为这是预期的)。如果我们向后滚动几周,这样2周就过去了(实际上不应该发生),那么从日期上看,您将得到相同的补偿-只是所有未来的补偿

Sub SetDate()
Dim Week1 As Date
Dim Week2 As Date
Dim Week3 As Date
Dim Week4 As Date

Week1 = Worksheets("Week1").Range("B4").Value
Week2 = Worksheets("Week2").Range("B4").Value
Week3 = Worksheets("Week3").Range("B4").Value

Dim FoundOldDate

Do
FoundOldDate = False
If Week1 - Date < 0 Then
    Week1 = DateAdd("d", 7, Week3)
    FoundOldDate = True
End If
If Week2 - Date < 0 Then
    Week2 = DateAdd("d", 7, Week1)
    FoundOldDate = True
End If
If Week3 - Date < 0 Then
    Week3 = DateAdd("d", 7, Week2)
    FoundOldDate = True
End If
Loop While FoundOldDate

Worksheets("Week1").Range("B4").Value = Week1
Worksheets("Week2").Range("B4").Value = Week2
Worksheets("Week3").Range("B4").Value = Week3

End Sub
Sub-SetDate()
Dim Week1作为日期
昏暗的一周2作为日期
第3周作为日期
第4周作为日期
Week1=工作表(“Week1”).范围(“B4”).值
Week2=工作表(“Week2”).范围(“B4”).值
Week3=工作表(“Week3”).范围(“B4”).值
暗淡的基础日期
做
FoundOldDate=False
如果第1周-日期<0,则
周1=日期添加(“d”,7,周3)
FoundOldDate=True
如果结束
如果第2周-日期<0,则
周2=日期添加(“d”,7,周1)
FoundOldDate=True
如果结束
如果第3周-日期<0,则
第3周=日期添加(“d”,第7周,第2周)
FoundOldDate=True
如果结束
在FoundOldDate时循环
工作表(“周1”)。范围(“B4”)。值=周1
工作表(“周2”)。范围(“B4”)。值=周2
工作表(“第3周”)。范围(“B4”)。值=第3周
端接头

您是否希望第1周始终是当前一周的星期一?这是最好的方法是的,但由于3周有3张工作表,这将意味着将所有不可行的单元格数据传输到第1周,然后在第3周后变为第7天,然后在第2周结束第3周后7天,第1周将恢复为最早的一周,因此如果我可以上传一张图片,它将更加清晰,但我没有足够的要点,所以忽略第3周后的1,这真的不相关,只是命名它与其他周不同,所以它们都只是一周,将图片上传到imgur.com然后在你的问题中发布链接。这看起来正是我需要的。我需要检验一下。非常感谢