Мы используем электронную таблицу в качестве наших карточек времени. Шаблон хранится на сервере со ссылками на него на рабочих столах индивидуума.

Я пытаюсь выяснить код VB, который помог бы в достижении цели: когда ячейка для имени пользователя (B5) пуста, код будет заполнять дату следующего воскресенья в (B7). После того, как пользователь вводит свое имя в B5, значение B7 не должно быть изменено.

Если я использую формулу (=IF(B5="",TODAY()+8-WEEKDAY(TODAY()),B7)) в B7, мне нужно включить циклическую ссылку, которая не следует шаблону электронной таблицы Таким образом, вызывая ошибки для каждого человека.

Корпоративный говорит, что лист должен быть в Excel, из-за импорта программного обеспечения. В противном случае я бы использовал Word и использовал функцию "CreateDate" для достижения того же.

Я пытался научить VB делать это, но я надеялся, что какой-нибудь эксперт сможет помочь с кодом за 5 минут. плоский и просто позвольте мне разобрать это.

1 ответ1

0

Вы можете использовать процедуру Auto_Open, которая автоматически выполняется каждый раз, когда открывается рабочая книга. Запустите редактор VBA (ALT+F11), вставьте новый модуль VBA и скопируйте код ниже. Безопасно, и вы готовы идти.

Код выглядит в значительной степени как формула, которую вы уже использовали:

Sub Auto_Open()
    Const Sheetname = "Sheet1"
    Const NameCell = "B5"
    Const DateCell = "B7"

    If IsEmpty(Worksheets(Sheetname).Range(NameCell).Value) Then
        Worksheets(Sheetname).Range(DateCell).Value = Date + 8 - Weekday(Date)
    End If
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .