在excel中编辑长字符串

在excel中编辑长字符串,excel,vba,Excel,Vba,我努力实现的目标: 我的单元格中有很长的字符串,我想编辑它们。然后我想把它们写回那个牢房 我已经尝试过的: 我试图将文本复制到word bullitpoint,然后将文本写回excel单元格。但这有点像用大锤敲碎坚果。我也知道输入框和msgbox,但我无法用它解决我的问题 我在寻找什么: 我正在寻找一个点击事件,该事件将我的文本放入一个弹出窗口,我可以在该窗口中编辑文本并将其写回释放事件的单元格,或者以其他方式编辑我的字符串。逻辑: 创建一个Userform,而不是使用Inputbox。以便您可

我努力实现的目标: 我的单元格中有很长的字符串,我想编辑它们。然后我想把它们写回那个牢房

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

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

逻辑:

  • 创建一个
    Userform
    ,而不是使用
    Inputbox
    。以便您可以编辑文本
    MsgBox
    是不可能的,因为您将无法编辑任何内容
  • 工作表\u Change
    中启动userform,然后可以在那里编辑文本,最后将其写回工作表
  • 基本准备:

    打开VBA编辑器并插入用户表单。添加
    文本框
    命令按钮
    。它可能看起来像这样

    代码:将其粘贴到用户表单的代码中

    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
    
    正在运行的代码:

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


    逻辑:

  • 创建一个
    Userform
    ,而不是使用
    Inputbox
    。以便您可以编辑文本
    MsgBox
    是不可能的,因为您将无法编辑任何内容
  • 工作表\u Change
    中启动userform,然后可以在那里编辑文本,最后将其写回工作表
  • 基本准备:

    打开VBA编辑器并插入用户表单。添加
    文本框
    命令按钮
    。它可能看起来像这样

    代码:将其粘贴到用户表单的代码中

    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
    
    正在运行的代码:

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


    您具体的编程问题是什么?我很久以前创建了一个插件,它可以实现这一点。让我帮你查一下。但在此之前(既然你想在
    事件中看到这个,我有一个简短的问题要问你。在弹出窗口出现之前字符串应该有多长时间?嗨!我刚刚计算了最长的长度,它最多有1200个字母。不,我说的是minimumAh,好的,最小值是两个字母。你具体的编程问题是什么?我很久以前创建了一个外接程序w。)这是谁做的。让我帮你搜索一下。但是在那之前(因为你想在
    事件中使用这个
    ,我有一个简短的问题要问你。在弹出窗口出现之前字符串应该有多长时间?嗨!我刚刚数了最长的长度,它最多有1200个字母。不,我说的是minimumAh好的,最小值是两个字母。很高兴能提供帮助:)很高兴能帮上忙:)