我正在使用VBA创建控件,并且无法通过将它们称为控件来设置 font 。
我为它们命名,并且如果我通过名称Me.(control variable name).Font
引用它们,可以修改字体。
我需要知道正确的语法才能使其正常工作。
我想我已经尝试了所有组合,但没有一个成功。
For CountRecords = 0 To rs.RecordCount - 1
tempLeft = 6
For countfields = 0 To rs.Fields.Count - 1
tempname = rs.Fields.Item(countfields).Name & CountRecords
frmtst.Controls.Add "forms.textbox.1", tempname
Set ctl = Me.frmtst(tempname)
Me.test.Font = 14 'set the font on a test textbox
Me.Controls(tempname).Value.Font = 14 '****Trouble line ********
ctl.Width = ((columnwidth(countfields) ^ 0.8) * 10) + 25
ctl.Height = 24
ctl.Left = tempLeft 'templeft + columnwidth(CountFields) + 18
tempLeft = tempLeft + ctl.Width + 3
ctl.Top = 20 * CountRecords + 3
ctl = rs.Fields.Item(countfields).Value
If rs.Fields.Item(countfields).Type = 6 Then
ctl = Format(ctl, "$#,##0.00")
end if
Next countfields
rs.MoveNext
Next CountRecords
答案 0 :(得分:1)
在表单过程中使用我代替了表单名称,该名称似乎在frmtst
上方。因此Me.frmtst(tempname)
是双重引用。
您可以使用tempname
引用控件Me.tempname
。使用Me.tempname.Font.Name = "Lucida Console"
设置字体,并使用Me.tempname.Font.Size = 10
设置字体大小
答案 1 :(得分:0)
如何正确引用控件
您可以引用控件
Me.Test
),Controls
集合或Set ctl = Me.Controls(tempname)
)隐式设置 请注意,粒子 Me
始终引用当前UserForm实例 (不是其名称)< / em>,并且可以/应该在userform代码模块中使用。
例如,您可以引用Me.Controls
或控件集合中的给定项目,例如Me.Controls(tempname)
。
-这是不好使用,但是要从后面的表单代码中引用UserForm的默认实例(例如frmtst
)。
此外,不可能在同一语句中引用两者,例如Me.frmtst(tempname)
。
建议您阅读以更深入地理解:UserForm1.Show?
1a)测试分配给.Size
的{{1}}属性丢失
.Font
1b).Font属性失败之前, ' Direct referencing a control of the current Userform instance - missing .Size property
Me.Test.Font.Size = 14 ' instead of: Me.test.Font = 14
属性的错误插入
.Value
2)对象引用
但是,如果您希望将对象设置到存储器,则在[1b]情况下显示的代码行是多余的,并且 您应该决定坚持选择的方法。
' Indirect referencing a control of the current Userform instance - bad .Value prop, .Font prop without .Size
Me.Controls(tempname).Font.Size = 14 ' instead of: Me.Controls(tempname).Value.Font = 14
更多评论
始终使用Dim ctl As MsForms.TextBox ' declare MSForms object (e.g. TextBox, or Object)
Set ctl = Me.Controls(tempname) ' instead of: Set ctl = Me.frmtst(tempname)
ctl.Font.Size = 14 ' instead of: .Font = 14
检查所有变量的正确和完整声明(可以在代码中包含一些变量)。
顺便说一句,您实际上是通过指数Option Explicit
计算控件的宽度吗?