1

私が達成しようとし ているのは、セルに長い文字列があり、それらを快適に編集したいということです。その後、それらをそのセルに書き戻したいと思います。

私がすでに 試したこと:テキストを分離された単語のブリットポイントにコピーし、テキストをExcelセルに書き戻そうとしました。しかし、それはハンマーでナッツを割るようなものです。入力ボックスとメッセージボックスも知っていますが、これで問題を解決できませんでした。

私が探しているもの: テキストをポップアップ ウィンドウに表示するクリック イベントを探しています。そこでテキストを編集し、それをセルに書き戻してイベントを解放したり、別の方法で文字列を快適に編集したりできます。

4

1 に答える 1

1

論理:

  1. Userformを使用する代わりに を作成しますInputbox。テキストを編集できるようにします。MsgBox何も編集できないため、問題外です。
  2. ユーザーフォームを起動すると、Worksheet_Changeそこでテキストを編集して、最終的にワークシートに書き戻すことができます。

基本的な準備:

VBA エディターを開き、ユーザーフォームを挿入します。TextBoxaと aを追加し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

コードの実行:

ここに画像の説明を入力

テキストが入力されたら、関連する変更を加え ( 2 番目の文を新しい行に移動しました)、ボタンを押しUpdateます。

ここに画像の説明を入力

于 2013-10-21T09:26:12.663 に答える