显示星期数和日期年份

时间:2020-05-27 08:36:55

标签: vba date

我正在编写一个代码,以显示用户在第34行中回答“是”时的日期,用户,星期数和年份。

到目前为止,我已经管理好要显示的日期和用户名,但是我遇到了星期数和年份的麻烦(由于某种原因,它总是说1899)。你能帮我吗?

这就是我得到的:

Private Sub Worksheet_Change(ByVal Target As Range)   
    If Target.Column = 34 Then
        Select Case Target
            Case "Yes", "yes"
                Target.Offset(0, 1) = Date
                Target.Offset(0, 2) = Application.UserName
                Target.Offset(0, 4) = WeekNum
                Target.Offset(0, 6) = Year(date_value)


            Case vbNullString
                Range("AI" & Target.Row & ":AJ" & Target.Row).ClearContents


        End Select
    End If

End Sub

2 个答案:

答案 0 :(得分:0)

您可以使用工作表功能,就像在一周的excel单元格中使用它们一样:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 34 Then
        Select Case Target
            Case "Yes", "yes"
                Target.Offset(0, 1) = Date
                Target.Offset(0, 2) = Application.UserName
                Target.Offset(0, 4) = Application.IsoWeekNum(Date)
                Target.Offset(0, 6) = Year(Date)
            Case vbNullString
                Range("AI" & Target.Row & ":AJ" & Target.Row).ClearContents
        End Select
    End If

End Sub

您无法获得年份,因为您没有名为date_value的变量,您需要使用Date(指今天的日期)或在Date变量中建立日期。

答案 1 :(得分:0)

我猜对于Target.Offset(0, 4) = WeekNum,您正在尝试使用Excel内置函数WEEKNUM? 然后,您可以像这样写星期几:

Option Explicit

Sub showdate()
    Dim a As Range
    Dim ws As Worksheet
    Dim wb As Workbook

    Set wb = ActiveWorkbook
    Set ws = wb.Worksheets(1)

    Set a = ws.Range("A1")

    a.Value = WorksheetFunction.WeekNum(Now, vbMonday)
End Sub

Now专门是执行日期,当然您应该用保存要操作的日期的变量替换它。 年份可以这样显示:

    Dim b As Range
    Set b = ws.Range("A2")
    b.Value = Year(Now)

这给了我这个输出:

enter image description here