1

我试图完成的事情: 我的单元格中有很长的字符串,并且想要舒适地编辑它们。之后我想把它们写回那个单元格。

我已经尝试过: 我尝试将文本复制到单词bulitpoint分隔并将文本写回excel单元格。但这有点像用大锤敲碎坚果。我也知道输入框和 msgbox,但我无法解决我的问题。

我在寻找什么: 我正在寻找一个单击事件,它将我的文本放入一个弹出窗口中,我可以在其中编辑文本并将其写回释放事件的单元格或其他方式来编辑我的字符串。

4

1 回答 1

1

逻辑:

  1. 创建一个Userform而不是使用Inputbox. 以便您可以编辑文本。MsgBox不可能,因为您将无法编辑任何内容。
  2. Worksheet_Change启动用户表单中,您可以在那里编辑文本,最后将其写回工作表。

基本准备:

打开您的 VBA 编辑器并插入一个用户窗体。添加一个TextBox和一个CommandButton。它可能看起来像这样。

在此处输入图像描述

代码:将其粘贴到用户窗体的代码中

Private Sub UserForm_Initialize()
    With TextBox1
        .MultiLine = True
        .WordWrap = True
        .ScrollBars = fmScrollBarsVertical
        .EnterKeyBehavior = True
    End With
End Sub

Private Sub CommandButton1_Click()
    Unload Me
End Sub

代码:将其粘贴到相关的工作表代码区域

'~~> Length of characters
Const nChars As Long = 2

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sString As String

    On Error GoTo Whoa

    '~~> Check if there was a Paste/Autofill done
    If Target.Cells.CountLarge > 1 Then Exit Sub

    Application.EnableEvents = False

    '~~> Check if the length is more than 2
    If Len(Target.Value) > nChars Then
        '~~> Set the userform's textbox text
        With UserForm1
            .TextBox1.Text = Target.Value
            .Show
            '~~> Get the value back to the sheet
            Target.Value = .TextBox1.Text
        End With
    End If

Letscontinue:
    Application.EnableEvents = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume Letscontinue
End Sub

代码在行动:

在此处输入图像描述

填充文本后,我们进行相关更改(我将第二句移至新行)并按下Update按钮。

在此处输入图像描述

于 2013-10-21T09:26:12.663 回答