25.06.2016, 15:48
Hallo liebes Forum,
ich habe ein Programm geschrieben, mit dem ich per Doppelklick in einem in einer Textbox stehenden Satz einen Punkt einfügen oder löschen kann. Ist bei der Cursorposition in dem Satz kein Punkt vorhanden,
wird dort einer eingefügt. Ist ein Punkt innerhalb des Satzes vorhanden, kann der Cursor links oder rechts von diesen Punkt per Doppelklick ihn wieder löschen. Das klappt alles wunderbar.
Leider musste ich in die Userform ein zweites Textfeld TextBox2 einbauen. Diese TextBox2 hat nur die Aufgabe den Focus zu übernehmen, damit in der Textbox1 nach dem Doppelklick die Markierung aufgehoben wird.
Das kann es nicht sein! Ich will nach dem Doppelklick in der TextBox1 keine Markierung haben. Aber wie bekomme ich das hin?
Zur Veranschaulichung der Problematik habe ich euch mein kleines Programm als Attachment hochgeladen.
ich habe ein Programm geschrieben, mit dem ich per Doppelklick in einem in einer Textbox stehenden Satz einen Punkt einfügen oder löschen kann. Ist bei der Cursorposition in dem Satz kein Punkt vorhanden,
wird dort einer eingefügt. Ist ein Punkt innerhalb des Satzes vorhanden, kann der Cursor links oder rechts von diesen Punkt per Doppelklick ihn wieder löschen. Das klappt alles wunderbar.
Leider musste ich in die Userform ein zweites Textfeld TextBox2 einbauen. Diese TextBox2 hat nur die Aufgabe den Focus zu übernehmen, damit in der Textbox1 nach dem Doppelklick die Markierung aufgehoben wird.
Das kann es nicht sein! Ich will nach dem Doppelklick in der TextBox1 keine Markierung haben. Aber wie bekomme ich das hin?
Zur Veranschaulichung der Problematik habe ich euch mein kleines Programm als Attachment hochgeladen.
Code:
Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim intA As Integer
Dim vbstr As String
With TextBox1
TextBox1.SetFocus
intA = .SelStart
vbstr = .Text
End With
If InStr(Mid(vbstr, intA - 1, 3), ".") = 0 Then
'Punkt setzen
vbstr = Mid(vbstr, 1, intA) & "." & Mid(vbstr, intA + 1, Len(vbstr) - intA + 1)
Else
Debug.Print "Rechts: " & InStr(Mid(vbstr, intA - 1, 3), ".")
If InStr(Mid(vbstr, intA - 1, 3), ".") = 2 Then
'Punkt löschen rechts vom Cursor
vbstr = Mid(vbstr, 1, intA - 1) & Application.Substitute(Mid(vbstr, intA, 3), ".", "", 1) & Mid(vbstr, intA + 3, Len(vbstr) - intA - 3 + 1)
Else
'Punkt löschen links vom Cursor
vbstr = Mid(vbstr, 1, intA) & Application.Substitute(Mid(vbstr, intA + 1, 3), ".", "", 1) & Mid(vbstr, intA + 4, Len(vbstr) - intA - 4 + 1)
End If
End If
Debug.Print vbstr
'Problemstelle
With TextBox1
.SetFocus
.Text = vbstr
End With
'Markierung Aufheben geht nur mit TextBox2.SetFocus
TextBox2.SetFocus
End Sub
Sub UserForm_Initialize()
Dim vbstr
vbstr = "Per Doppelklick kann innerhalb dieses Satzes ein Punkt gesetzt oder gelöscht werden."
TextBox1 = vbstr
TextBox1.Font.Size = 15
End Sub