如何动态编辑Excel VBA表单标签和标签标签



我有一个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

最新更新