我对VBA很新。我有一系列日期,我需要编写一个代码,将单元格中的日期更改为单元格中使用的月份的最后一天。
例如,如果单元格中的日期为28/03/2018
,我希望将其替换为31/03/2018
。知道我该怎么做吗?
答案 0 :(得分:4)
由于Eomonth公式,您还可以使用一行代码获得所需的结果:
Range("A1") = Excel.Application.WorksheetFunction.EoMonth(Range("A1").Value2, 0)
答案 1 :(得分:2)
您可以使用用户定义的函数GetLastDayOfMonth()
并传递您感兴趣的范围:
Option Explicit
Public Function GetLastDayOfMonth(ByVal myDate As Date) As Date
GetLastDayOfMonth = DateSerial(Year(myDate), Month(myDate) + 1, 0)
End Function
Public Sub TestMe()
Range("A1") = DateSerial(2000, 11, 11)
If Range("A1") = GetLastDayOfMonth(Range("A1")) Then
Debug.Print "LAST DAY!"
End If
Range("A1") = DateSerial(2000, 12, 31)
If Range("A1") = GetLastDayOfMonth(Range("A1")) Then
Debug.Print "LAST DAY! " & Range("A1")
Range("A1") = DateAdd("d", 1, Range("A1"))
End If
End Sub
该函数检查日期的月份和年份,该日期将被传递并返回一个新日期,即该特定月份和年份的月份的最后一天。
然后在TestMe
版本中,您可以将给定日期与该函数生成的月份的最后一天进行比较。如果日期相同,则此日期是相应月份的最后一天。使用DateAdd()
可以获得lastDay的第二天。
在上面的例子中,我已经明确地写了Range(“A1”)9次,因此可能更容易理解。
答案 2 :(得分:1)
首先,如果您只想在Excel中使用当月的最后一天,请使用= EOMONTH函数,或者查看此SO帖子中的vba代码: VBA Run Macro Last Day of the Month
滚动自己的日期时间代码是一个坏主意。不要这样做。
答案 3 :(得分:1)
为了让它真的很短,你可以使用:
$query = "INSERT INTO scan (user_id, osha, firstname, lastname, company, trade, email, picture) VALUES (" .
"'" . $user_id . "', " .
"'" . mysqli_real_escape_string($dbc, $osha ) . "', " .
"'" . mysqli_real_escape_string($dbc, $firstname) . "', " .
"'" . mysqli_real_escape_string($dbc, $lastname ) . "', " .
"'" . mysqli_real_escape_string($dbc, $company ) . "', " .
"'" . mysqli_real_escape_string($dbc, $trade ) . "')";
mysqli_query($dbc, $query);
答案 4 :(得分:0)
Function LastDayOfMonth(ByVal d As Date)
LastDayOfMonth = DateSerial(Year(d), Month(d), 1)
LastDayOfMonth = DateAdd("m", 1, LastDayOfMonth)
LastDayOfMonth = DateAdd("d", -1, LastDayOfMonth)
End Function
步骤 2 和 3 可以避免所有复杂的日期计算。
对于Excel方式,请参阅other answer。
答案 5 :(得分:0)
此VBA函数将计算该月的最后一天:
Public Function LastDay(ByVal d As Date)
Dim returnDate As Date
'First day of current month
returnDate = DateSerial(Year(d), Month(d), 1)
'Forward a month
returnDate = DateAdd("m", 1, returnDate)
'back one day
returnDate = DateAdd("d", -1, returnDate)
LastDay = returnDate
结束功能
通过跳到月初工作,增加一个月然后减去一天(所以2月1日 - > 1月3日 - > 2月28日)
答案 6 :(得分:0)
在VBA中这样:
Sub LastDayOfMonth()
Dim dates As Range, dt As Range
Set dates = Range("A1") //Update as required
For Each dt In dates
dt = Application.WorksheetFunction.EoMonth(dt, 0) //e.g. 01/06/2018 ~~~> 30/06/2018
Next
End Sub