19.11.2014, 17:54
Hallo Sotaros,
das Leeren eines Eintrages könntest Du so vornehmen:
Es gibt nun jedoch ein Problem mit meinem code. Wenn Du in Textbox1 auf eine geleerte Zeile drückst, dann wird irgend was davor markiert. Das könntest Du mit dieser codezeile verhindern - später noch was dazu, warum nicht:
Jetzt ist allerdings die Frage, was passieren soll, wenn in beiden Textboxen die gleiche Zeile Leer ist... Willst Du den Doppelklick als "Schalter" für diese Zeile der Textbox - Text einfügen / löschen? Wenn die Textboxen ganz leer sind, müsstest Du ggf. 10x doppelklicken und dabei immer eine leere Zeile erwischen, bis die wieder voll ist
Der "Schalter" würde so aussehen. Der code muss jedoch in das MouseUp-Ereignis, da das Doppelklick-Ereignis seltsamerweise nur dann wirkt, wenn Du damit einen Eintrag triffst. Damit bin ich jetzut dem "später noch was dazu ...". Statt der oben geposteten "Verhinderungszeile" nimmst Du diesen code hier.
Entweder kannst Du innerhalb des If dann das Makro verlassen oder Du lässt es weiterlaufen, dann wird der EIntrag noch markiert.
Übrigens ist es mir bisher nur ein mal gelungen, dass Doppelklick-Ereignis ohne das MouseUp-Ereignis auszulösen ... Das MouseUp greift vor dem Doppelklick, denn bereits beim ersten Klick geht die Taste ja wieder hoch.
das Leeren eines Eintrages könntest Du so vornehmen:
Code:
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'Variablendeklaration
'Variant-Array
Dim arrZeilen1, arrZeilen2
'Text der textboxen 1 und 2 anhand der Zeilenenden splitten
arrZeilen1 = Split(TextBox1, vbLf)
'aktuellen Eintrag loeschen
arrZeilen1(TextBox1.CurLine) = ""
'geaenderten Inhalt zurueckschreiben
TextBox1 = Join(arrZeilen1, vbLf)
End Sub
Es gibt nun jedoch ein Problem mit meinem code. Wenn Du in Textbox1 auf eine geleerte Zeile drückst, dann wird irgend was davor markiert. Das könntest Du mit dieser codezeile verhindern - später noch was dazu, warum nicht:
Code:
'Markieren bei leerer Zeile verhindern
If arrZeilen1(TextBox1.CurLine) = Chr(13) Then Exit Sub
Jetzt ist allerdings die Frage, was passieren soll, wenn in beiden Textboxen die gleiche Zeile Leer ist... Willst Du den Doppelklick als "Schalter" für diese Zeile der Textbox - Text einfügen / löschen? Wenn die Textboxen ganz leer sind, müsstest Du ggf. 10x doppelklicken und dabei immer eine leere Zeile erwischen, bis die wieder voll ist
Der "Schalter" würde so aussehen. Der code muss jedoch in das MouseUp-Ereignis, da das Doppelklick-Ereignis seltsamerweise nur dann wirkt, wenn Du damit einen Eintrag triffst. Damit bin ich jetzut dem "später noch was dazu ...". Statt der oben geposteten "Verhinderungszeile" nimmst Du diesen code hier.
Code:
'Wenn der Eintrag / die Zeile leer ist, dann
If arrZeilen1(TextBox1.CurLine) = Chr(13) Then
'aktuellen Eintrag aud Spalte A holen
arrZeilen1(TextBox1.CurLine) = Cells(TextBox1.CurLine+1, 1)
'Uebernahme des Array in textbox1 mit Zeillentrenner vblf
Textbox1 = Join(arrZeilen1, vbLf)
'Ende Wenn der Eintrag / die Zeile leer ist, dann
End If
Entweder kannst Du innerhalb des If dann das Makro verlassen oder Du lässt es weiterlaufen, dann wird der EIntrag noch markiert.
Übrigens ist es mir bisher nur ein mal gelungen, dass Doppelklick-Ereignis ohne das MouseUp-Ereignis auszulösen ... Das MouseUp greift vor dem Doppelklick, denn bereits beim ersten Klick geht die Taste ja wieder hoch.