简体   繁体   中英

How to insert text in between texts in Textbox VB6/VBA

I wanted to insert some texts(new line) in between existing texts in a textbox (multiline = true).


Example: (Textbox1.text's value is written below)

Name: Name of Client

DOB: 11/11/11

>>>THIS IS WHERE I WHAT TO INSERT THE VALUE OF TEXTBOX2.TEXT

Hospitalization: No

Serial Number: 12345678


Private Sub cmdTransfer_Click()
   Dim SearchNote As Integer, SearchThis As String, tx2 As String

   If cb9.Value = True Then
        tx2 = "ADDRESS: " & vbTab & text2.Text & vbCrLf
   End If

   SearchThis = "Hospitalization"
   SearchNote = InStr(Textbox1.Text, SearchThis)

   If SearchNote Then
       With textbox1
          .SetFocus
          .SelStart = SearchNote
          .Text = .Text & .SelStart & tx2
       End with
   End If

End Sub

What I'm doing in my code is I'm getting the number of characters before the "Hospitalization" so that I can insert the value of Textbox2 before it. I dont know how to do that tho. Please help.

Thanks!

I believe the code you are looking for is this:

Left(SearchNote, InStr(1, SearchNote, "Hospitalization") - 1) & "new text to insert" & Mid(SearchNote, InStr(1, SearchNote, "Hospitalization"))

Left will take the first few letters up to the starting point of "Hospitalization". Then you insert the new string (possible with a new line before and after with & chr(10) & ). Then you add with Mid everything after "Hospitalization".

Since I don't have a sample copy of your spreadsheet, there is a chance that one/some of my variables might be different. If you find problems with any of these, check all of the vars.

Solution #1: Create module and add this function:

Function addText(txtBox As String, addString As String)
    Dim endIndex As Long
    Dim SearchThis As String
    Dim input1, input2, input3 As String

    SearchThis = "Hospitalization"

    ' Get index of Hospitalization
    endIndex = InStr(1, txtBox, SearchThis) - 1

    If endIndex > 0 Then
        input1 = Mid(txtBox, 1, endIndex)
        input2 = addString & vbNewLine
        input3 = Mid(txtBox, endIndex, Len(txtBox))

        ' Return with added text
        addText = CStr(input1 & input2 & input3)
    End If
End Function

then call in your button to update your text box:

Private Sub cmdTransfer_Click()
    Dim tx2 As String

    If cb9.Value = True Then
        tx2 = "ADDRESS: " & vbTab & text2.Text & vbNewLine
    Else
        ' Stop if there is nothing to add
        End
    End If

    If textbox1.Value <> vbNullString Then
        textbox1.Value = addText(textbox1.Value, tx2)
    End If
End Sub

Solution #2: Call everything from within your button:

Private Sub cmdTransfer_Click()
    Dim endIndex As Long
    Dim SearchThis As String
    Dim input1, input2, input3 As String
    Dim txtBox As String, tx2 As String

    'set tx2
    If cb9.Value = True Then
        tx2 = "ADDRESS: " & vbTab & text2.Text & vbNewLine
    Else
        ' Stop if nothing to add
        End
    End If

    If textbox1.Value <> vbNullString Then
        ' set txtBox variable
        txtBox = textbox1.Value
    Else
        ' Avoid Error if text box is null
        End
    End If

    SearchThis = "Hospitalization"

    ' Get index of Hospitalization
    endIndex = InStr(1, txtBox, SearchThis) - 1

    If endIndex > 0 Then
        input1 = Mid(txtBox, 1, endIndex)
        input2 = tx2 & vbNewLine
        input3 = Mid(txtBox, endIndex, Len(txtBox))

        textbox1.Value = input1 & input2 & input3
    End If

End Sub

What i would do is split text1 into an array then just add the text in the middle, mainString is text1, midStr is text2:

Dim mainStr as String, midStr as String, ArreStr() as String

mainStr=text1.text:midStr=text2.text
ArreStr=Split(mainStr,VBNewLine)
text1.text=ArreStr(0) & vbnewline & midStr & vbnewline & ArreStr(1)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM