Показать номер недели и год даты - PullRequest
0 голосов
/ 27 мая 2020

Я делаю код, который показывает дату, пользователя, номер недели и год, когда пользователь говорит «да» в строке 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 голосов
/ 27 мая 2020

Думаю, с 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

0 голосов
/ 27 мая 2020

Вы можете использовать функцию рабочего листа, как если бы вы использовали их в ячейках Excel, например, для Weeknum:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...