我有一个excel vba表单,其中有一些标签(页面)。我需要的是,如果我双击标签,它应该是可编辑的。标签的情况也是如此。 我尝试在双击功能中添加一些内容,但没有显示任何更改。
答案 0 :(得分:0)
最终用户无法编辑标签
您可以采用此解决方法
'change "Label1" occurrences to your actual label name
Private Sub Label1_DblClick()
Me.Label1.Caption = Application.InputBox("enter label text", "label editing", "")
End Sub
答案 1 :(得分:0)
您可以拥有TextBox
并禁用它。副作用是您将在标签上设置文本框编辑光标。
有两个子程序,一个名为Labelize
,另一个名为Textboxize
。前者锁定文本框,使其透明,并将3D效果设置为平面。后者解锁它,使其不透明,并将3D设置为凹陷(默认)。
' Makes a textbox look like a label
Private Sub Labelize(txtbox As MSForms.TextBox)
txtbox.Locked = True
txtbox.BackStyle = fmBackStyleTransparent
txtbox.SpecialEffect = fmSpecialEffectFlat
End Sub
' Makes a textbox look like a textbox
Private Sub Textboxize(txtbox As MSForms.TextBox)
txtbox.Locked = False
txtbox.BackStyle = fmBackStyleOpaque
txtbox.SpecialEffect = fmSpecialEffectSunken
End Sub
在表单initialize事件集中调用传入文本框的Labelize
方法。
Private Sub UserForm_Initialize()
Labelize Me.txtExample
End Sub
在每个文本框的双击事件中,再次调用传入文本框的Textboxize
方法。
Private Sub txtExample_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Textboxize Me.txtExample
End Sub
然后在每个KeyDown
事件中,检查按下的键是否输入,然后调用Labelize
方法。
Private Sub txtExample_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then Labelize Me.txtExample
End Sub