2013-10-21 61 views
1

我試圖完成的事情: 我在我的單元格中有很長的字符串,並且想要編輯它們很舒服。之後,我想把它們寫回到那個單元格中。在Excel中編輯長字符串很舒服

我已經試過了: 我試圖將文本複製到單詞bullitpoint分離並將文本寫回excel單元格。但這有點像用大錘打破堅果。我也知道輸入框和msgbox,但我無法解決這個問題。

我所期待的: 我要尋找的是把我的文字變成一個彈出窗口,在那裏我可以編輯的文字,並將其寫入回該版本的事件或另一種方式來編輯單元格單擊事件我的琴絃很舒服。

+0

**你有什麼具體的方案問題?** – 2013-10-21 08:59:43

+0

我創建了一個附加在很久以前它做到這一點。讓我爲你搜索它。但是在此之前(因爲你想在'事件'中找到這個,所以我很快就會問你,在彈出窗口之前應該彈出多長的字符串? –

+0

嗨!我剛剛計算了我擁有的最長時間,最長爲1200個字母 – ruedi

回答

1

邏輯:

  1. 創建Userform而不是使用Inputbox。以便您可以編輯文本。 MsgBox是不可能的,因爲你將無法編輯任何東西。
  2. Worksheet_Change中啓動用戶窗體,然後您可以在其中編輯文本並最終將其寫回工作表。

基本準備:

打開VBA編輯器,並插入一個用戶窗體。添加一個TextBox和一個CommandButton。它可能看起來像這樣。

enter image description here

代碼:在用戶窗體的代碼

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 

代碼在行動粘貼此:

enter image description here

一旦文本填充,我們作出相應的修改(我把第二個句子到新行),然後按Update按鈕。

enter image description here

+0

This works great !!!非常感謝你! – ruedi

+0

很高興有幫助:) –