在VBA上编辑表单控件标签标题

时间:2018-08-06 17:48:05

标签: vba excel-vba

尝试编辑名为lblsearchreminder的表单控件标签的文本,并确保字体为Arial且大小为20。我正在从ActiveX文本框1中提取已编辑的文本,并尝试使其标题为标签。如果有人有任何见识,我将不胜感激。

Sub btnAltCustomSearch_Click()

    Dim strTextBox As String

    If Worksheets("User Interface").OLEObjects("TextBox1").Object.Value = "" Then
        ErrorX.Show
    Else
        strTextBox = Worksheets("User Interface").OLEObjects("TextBox1").Object.Value
        Worksheets("Muscle Wasting Database").Shapes("lblsearchreminder") = vbCrLf & "Disease: All" & vbCrLf & vbCrLf & "Keyword: " & strTextBox
        lblsearchreminder.Object.Characters.Text = "Arial"
        lblsearchreminder.Object.Font.Size = 20

    End If

End Sub

2 个答案:

答案 0 :(得分:2)

  
    

是的,textbox1是一个ActiveX文本框控件,但理想情况下,我将使用“表单控件”标签。因此,我试图从ActiveX文本框中提取输入内容,并在 Form Control标签 – Thor Nagel 3小时前

中使用它   

不幸的是,您无法操纵表单控件标签的字体大小/名称,颜色或样式。如果您注意到Excel功能区上的“字体”组中的格式设置项目已“显示为灰色”。

enter image description here

设置文本很容易

let apollo = require('apollo-server').ApolloMiddleware
app.use( '/graphql', apollo({ typeDefs, resolvers }) );

但是您不能这样做(即使Intellisense允许

Dim lblsearchreminder As Shape
Set lblsearchreminder = Sheet1.Shapes("Label 1")
lblsearchreminder.TextFrame.Characters.Text = "Hello"

lblsearchreminder.TextFrame.Characters.Font.Name = "Arial"

我建议改用lblsearchreminder.TextFrame2.TextRange.Characters.Font.Name = "Arial" 形状或TextBox

类似地,您不能使用

更改字体
ActiveX Label

答案 1 :(得分:0)

我不认为您正在使用表单控件TextBox1 ActiveX 控件的默认名称,该名称与使用.OLEObject.Object进行检索是一致的。

为其声明一个MSForms.TextBox变量。

Dim box As MSForms.TextBox

现在将其分配给.OLEObject.Object

Set box =  Worksheets("User Interface").OLEObjects("TextBox1").Object

如果在编译时ThisWorkbook中存在工作表“用户界面”,请为其指定一个代号(F4;将(Name)属性设置为例如{{1 }})-那么您可以直接使用该标识符,而无需从UserInterfaceSheet集合中提取工作表:

Worksheets

现在您可以使用早期绑定的对象引用,您将具有 IntelliSense 来指导您。 Set box = UserInterfaceSheet.OLEObjects("TextBox1").Object 没有MSForms.TextBox属性。它确实具有.Characters属性,因此您可以开始探索它:

Object Browser showing members of MSForms.TextBox

所以.Font属性是Font类型的对象;使用对象浏览器(F2),您可以浏览其成员:

Object Browser showing members of MSForms.NewFont

因此:

NewFont

应该这样做。


当心具有误导性的名称和前缀:box.Font.Name = "Arial" box.Font.Size = 20 的读取方式就像您在查看lblsearchreminder控件,而不是MSForms.LabelTextBox更合适,或者,如果您更喜欢与控制无关的名称,txtSearchReminder也可以使用。

SearchReminderBox也是Error模块中的函数,您在这里shadowing