Макрос в Excel для добавления даты в формате ISO-8601

0

По какой-то причине Excel заставляет меня использовать мой регион для нижних колонтитулов, когда я вставляю дату. Тем не менее, он также не обновляется автоматически при открытии листа. Без форматирования это довольно тривиальная проблема, однако форматирование текста проблематично, и я не уверен, как это исправить со всеми кавычками, которые, казалось бы, должны быть обязательными.

Private Sub Workbook_Open()
    'you need to get the font to size 6, use calibri, use a light grey #DBDBDB perhaps and use ISO-8601
    ActiveSheet.PageSetup.RightFooter = "&""Calibri""&6" & DBDBDB & Format(Now, "yyyy-mm-dd")
End Sub

Также теперь, кажется, есть число на заднем плане рабочего листа.
enter image description here

Jon Weinraub
источник

Ответы:

1

Некоторые попытки и неудачи привели меня к этому sub, из которых вы можете просто вставить соответствующие биты в свои собственные. Как вы можете видеть, я использовал Chr(34) вместо двойных кавычек для создания строки, потому что я думаю, что это повышает удобочитаемость, но это личное предпочтение. Далее вы заметите, что я хранил string в переменной, которая не является строго необходимой, но которая помогает, например, когда вы хочу использовать его в сообщении отладки, как я делаю в моем sub, Я считаю, что в таких случаях это помогает понять, что string Похоже, что это может быть довольно сложно отслеживать все цитаты, как вы уже заметили.

Я не совсем уверен, где вы ошиблись в своей конструкции строки, хотя кажется, что вам не хватает некоторых кавычек вокруг области, где вы определяете цвет шрифта, а также &K который должен предшествовать его шестнадцатеричное значение.

Для справки я использовал эта MSDN-страница чтобы помочь найти правильные коды форматирования для верхних и нижних колонтитулов.

Private Sub test()
  'you need to get the font to size 6, use calibri, use a light grey #DBDBDB perhaps and use ISO-8601
  Dim s As String
  s = "&" & Chr(34) & "Calibri" & Chr(34) & " &6 &KDBDBDB " & Format(Now, "yyyy-mm-dd")
  ActiveSheet.PageSetup.RightFooter = s
  Debug.Print s
End Sub
eirikdaude
источник
Да, я нашел ту статью, которую попробовал, следуя примеру, но тот факт, что мне нужно было процитировать имя шрифта, кажется, обескуражил меня. Хотя я включил всю защиту макросов, и она работает, когда я нажимаю кнопку «Воспроизвести» из среды IDE, я временно изменил дату компьютера, открыл рабочую книгу, и дата не изменилась автоматически, если я не нажал кнопку воспроизведения. Это нормальное поведение, я поставил его в неправильную функцию?
Jon Weinraub
Вам нужно переместить код в какое-то событие, которое запускает вас при открытии рабочей книги, при активации рабочего листа или чего-то подобного, как то, что вы имели в исходном коде (вместо того, чтобы быть в обычной подпрограмме). Это не должно быть слишком сложно, я думаю :)
eirikdaude
Я думал положить его в Private Sub Workbook_Open() позаботится об этом. Но я буду гуглить вокруг. Спасибо!
Jon Weinraub
Это должно позаботиться об этом, да. Я полагаю, вы поместили этот модуль в ThisWorkbook -объект?
eirikdaude
Да, это то, что я сделал.
Jon Weinraub