如何更改在VBA中创建的下拉列表的字体大小和格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更改在VBA中创建的下拉列表的字体大小和格式相关的知识,希望对你有一定的参考价值。

我有一个带有7x16表格和默认字体大小为22的单词模板。此模板用于通过ms访问中的按钮单击生成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).Font.Size = 7

将单元格中的所有内容缩小为7pt字体,而不仅仅是下拉列表。我还想将下拉列表用斜体显示。它是外观属性吗?

答案

为了应用字体更改,必须指定应该应用的确切范围。从理论上讲,那将是:

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

以上是关于如何更改在VBA中创建的下拉列表的字体大小和格式的主要内容,如果未能解决你的问题,请参考以下文章

[在下拉菜单中创建的PDF

Excel VBA更改页脚字体和字体大小

如何更改 asp 下拉列表中所有项目的字体系列?

如何在 VBA 的另一个函数中调用我在 VBA 中创建的函数?

使用 ASP.net 更改 HTML 文本区域中的字体名称和大小

如何给占位符在yii2 gridview中创建的下拉框