我试图完成的事情: 我的单元格中有很长的字符串,并且想要舒适地编辑它们。之后我想把它们写回那个单元格。
我已经尝试过: 我尝试将文本复制到单词bulitpoint分隔并将文本写回excel单元格。但这有点像用大锤敲碎坚果。我也知道输入框和 msgbox,但我无法解决我的问题。
我在寻找什么: 我正在寻找一个单击事件,它将我的文本放入一个弹出窗口中,我可以在其中编辑文本并将其写回释放事件的单元格或其他方式来编辑我的字符串。
逻辑:
Userform
而不是使用Inputbox
. 以便您可以编辑文本。MsgBox
不可能,因为您将无法编辑任何内容。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
按钮。