我正在编写一个代码,以显示用户在第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
答案 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)
这给了我这个输出: