如何动态编辑excel vba表单标签和选项卡标签?

时间:2018-02-05 11:07:03

标签: excel vba excel-vba

我有一个excel vba表单,其中有一些标签(页面)。我需要的是,如果我双击标签,它应该是可编辑的。标签的情况也是如此。 我尝试在双击功能中添加一些内容,但没有显示任何更改。

2 个答案:

答案 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