我有一个excel vba表单,其中有一些选项卡(页(。我需要的是,如果我双击标签,则应可编辑。标签也是如此。我试图将一些内容添加到双击功能中,但没有显示任何更改。
标签无法由最终用户编辑
您可以采用此解决方法
'change "Label1" occurrences to your actual label name
Private Sub Label1_DblClick()
Me.Label1.Caption = Application.InputBox("enter label text", "label editing", "")
End Sub
您可以拥有一个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
在形式初始化事件集中呼叫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