Как изменить размер шрифта и формат для выпадающих списков, созданных в VBA - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть шаблон слова с таблицей 7x16 и размером шрифта по умолчанию 22. Этот шаблон используется для создания календаря на 16 недель с помощью нажатия кнопки в мс Доступ. Календарь должен делать месяц и день 22pt, а содержимое 7pt. Это работает для текста, но не для моих выпадающих списков (которые должны быть шрифтом 7pt и курсивом)

Я попытался использовать следующий код для установки размера шрифта всей ячейки на 7pt, но также установил месяц и день на 7pt:

'Dim DDown As Word.Contentcontrol and curChar As int earlier in code (for context)
Set cel =  tbl.Cell(i, j)
    Set celRange = cel.Range

    celRange.Characters(curChar).Font.Size = 7 'This shrinks everything to 7pt

    celRange.Collapse wdCollapseEnd
    celRange.MoveEnd wdCharacter, -1

    Set DDown = celRange.ContentControls.Add(wdContentControlDropdownList) 

    'Add items to dropdown
    DDown.DropdownListEntries.Add "Shipping within 7 days"
    DDown.DropdownListEntries.Add "On schedule"
    DDown.DropdownListEntries.Add "On Hold"


    Set celRange = cel.Range
    celRange.Collapse wdCollapseEnd
    celRange.MoveEnd wdCharacter, -1
    celRange.Text = vbCrLf  'add a new line between dropdown lists
    celRange.Collapse wdCollapseEnd


    celRange.Select
    Set DDown = Nothing


Линия

celRange.Characters (curChar) .ont.Size = 7

сокращает все содержимое ячейки до шрифта 7pt вместо выпадающего списка. Я также хотел бы выделить курсивом выпадающий список. Это свойство внешнего вида?

1 Ответ

0 голосов
/ 20 апреля 2019

Чтобы применить изменение шрифта, необходимо указать точный диапазон, к которому он должен применяться. Теоретически это будет:

ContentControl.Range.Font.Size = 7

Однако управление содержимым DropDown является особым случаем. В моих тестах, если я применяю форматирование шрифта непосредственно к элементу управления контентом, это влияет на только список выборов и текст-заполнитель. Однако при выборе записи форматирование возвращается к формату окружающего текста.

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

Вот код для применения форматирования

    DDown.DropdownListEntries.Add "Shipping within 7 days"
    DDown.DropdownListEntries.Add "On schedule"
    DDown.DropdownListEntries.Add "On Hold"
    DDown.DefaultTextStyle = "Test7"
    DDown.Range.Font.Size = 7
    DDown.Range.Font.Italic = True

где "Test7" - это имя стиля, которое я создал в тестовом документе.

Если стиль не может быть предварительно определен в документе, его нужно будет создавать на лету. Вот пример кода для этого. Следующая строка должна предшествовать циклу (ее нужно выполнить только один раз), но следовать коду, который открывает / создает документ Word:

    CreateFont7Style ActiveDocument, "DdFont7" 'If the code already has a Document object, use that, not ActiveDocument

(Не забудьте заменить имя стиля, указанное здесь, на имя стиля в строке кода выше, которая применяет стиль к раскрывающимся элементам управления содержимым!)

Код для CreateFont7Style (который вы можете назвать как угодно, просто не забудьте изменить имя в обоих местах):

Sub CreateFont7Style(doc As Word.Document, styleName As String)
    Dim st As Word.style
    Dim fontSize As Long
    Dim bItalic As Boolean

    fontSize = 7
    bItalic = True

    Set st = doc.styles.Add(styleName, Word.WdStyleType.wdStyleTypeCharacter)
    st.Font.Size = fontSize
    st.Font.Italic = bItalic
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...