我正在尝试创建一个标识上个月日期范围的脚本(Cell G9是今天的日期)。这是工作;但是,输出格式化日期的方式与我想要的大不相同。 [J36]输出为" 01/08"什么时候应该是" 08/01"并且[J37]输出是" 6:11:37 AM" (将其解释为时间),应该是" 08/31"。我只是在特定单元格中编写输出,因为我希望看到它正在工作。但是,它是我想要格式化的变量,而不是单元格。我将在未来的代码中使用startdate和enddate变量,并且这些变量本身在任何单元格中都是不可见的。
我试图使用格式(startdate,mm / dd),但是我遇到了溢出错误。
这是我的剧本:
Dim thismonth As Integer
thismonth = Month(Sheet1.[G9])
Dim startdate As Date
Dim enddate As Date
Select Case thismonth
Case 1
startdate = 12 / 1
enddate = 12 / 31
Case 2
startdate = 1 / 1
enddate = 1 / 31
Case 3
startdate = 2 / 1
enddate = 2 / 28
Case 4
startdate = 3 / 1
enddate = 3 / 31
Case 5
startdate = 4 / 1
enddate = 4 / 30
Case 6
startdate = 5 / 1
enddate = 5 / 31
Case 7
startdate = 6 / 1
enddate = 6 / 30
Case 8
startdate = 7 / 1
enddate = 7 / 31
Case 9
startdate = 8 / 1
enddate = 8 / 31
Case 10
startdate = 9 / 1
enddate = 9 / 31
Case 11
startdate = 10 / 1
enddate = 10 / 31
Case 12
startdate = 11 / 1
enddate = 11 / 30
End Select
Sheet1.[J36] = startdate
Sheet1.[J37] = enddate
答案 0 :(得分:4)
一个更简单的解决方案怎么样:
Dim startDate as Date
Dim endDate as Date
startDate = Application.WorksheetFunction.EOMONTH(Sheet1.[G9],-2) + 1
endDate = Application.WorksheetFunction.EOMONTH(Sheet1.[G9],-1)
您可以完全摆脱VBA并直接在J36
和J37
中编写此工作表公式。
J36:=EOMONTH(G9,-2)+1
J37:=EOMONTH(G9,-1)