Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Steuerung der Anzeige einer Textbox durch Zeilenauswahl
#1
Hi liebe Experten,

ich habe zwei Textboxen identischer Größe, die genau parallel nebenenander liegen.

TextBox1 ist auf Multiline geschaltet und zeigt den Inhalt der Zellen A1 bis A10 an. Textbox2 ist ebenfalls auf Multiline geschaltet und zeigt zunächst nichts an. Jetzt soll folgendes passieren: Wenn ich in der Textbox1 irgendeine Zeile anklicke wird diese vollständig markiert. In der Textbox2 soll dann der äquivalente Inhalt aus dem Bereich B1 bis B10 stehen. Also ich wähle in der Textbox1 die Zeile 5 aus, dann steht in der TextBox2 der Inhalt aus Zelle B5 und zwar genau in der Höhe von Zeile 5 aus Textbox1. Wähle ich jetzt weiter Zeile 2 aus Textbox1 aus, steht in Textbox2 der Inhalt von Zelle B2, natürlich wieder in der Höhe von Zeile 2 aus Textbox1. Der Inhalt von zuvor in der Textbox2 erschienenen Inhalten soll aber dabei selbstverständlich nicht verschwinden. Die Textbox2 soll sich also nacheinander in Abhängigkeit von der getroffenen Auswahl aus Textbox1 auffüllen am Ende die Inhalte parallel nebeneinander
to top
#2
Hallo sotaros,

bist Du Dir sicher, das Du Textboxen hast? Schaue mal in unseren Beispielteil zu den abhängigen Auswahlfeldern ...
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#3
Hallo André,

ja das Ganze soll über 2 Textboxen programmiert werden. Das ganze ist dann so ähnlich wie ein Vokabellernprogramm.
Du wählst eine Zeile aus Textbox1 aus und direkt daneben erscheint dann die Lösung in Textbox2
to top
#4
Hallöchen,
Und wieso nimmst Du keine Dropdowns? Das geht dann ohne VBA. Hast Du Dir mal das Beispiel angeschaut?
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#5
Hallo André,

ich weiß, dass die Programmierung vielleicht nicht ganz so einfach ist. Aber
ich will eine Lösung in der in Textbox1 ausgewählt wird und in Textbox2 dann der
äquivalente Text aus Spalte B angezeigt wird. Zum einen ist die ganze Sache Teil
eines größeren Projekts zum anderen wäre für mich auch der Programmiercode selbst
sehr interessant.
to top
#6
Hallo sotaros,

da eine TextBox keinerlei Index hat (wie z. B. eine ComboBox oder eine ListBox) kannst Du keine Zeile darin anklicken um die dann markiert zu bekommen.

So, wie ich Dein Ansinnen sehe, bist Du auf dem "Holzweg".

Gruß Peter
to top
#7
Hi Peter,
ja es ist nicht unbedingt leicht. Aber ich bin sicher das VBA Profis das hinbekommen.

siehe auch folgender Thread:
'http://www.vb-fun.de/cgi-bin/loadframe.pl?ID=vb/tipps/tip0336.shtml
to top
#8
Hallöchen,

eine Textbox hat aber andere lohnende Eigenschaften, je nachdem, welche Textbox man nimmt. Kompliziert wird es mit der "einfachen" Textbox, da diese lediglich ein Makro bei Klick starten kann. Da ist nichts mit Markieren usw. Man könnte aber über diverse API und Umrechnungen je nach Schriftgröße, Zoom usw. mit etwas Glück die Zeile herausbekommen.

Einfacher wäre es mit der anderen Textbox - der ActiveX. Die hat Eigenschaften, mit denen man die Position im Text oder sogar die Zeile herausbekommt. Das dann in einem Mausereignis, und los geht's :-)

Code:
Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
MsgBox TextBox1.CurLine '.LineCount / .SelStart u.a.
End Sub

Die Zählung beginnt mit Linie 0. Um die zweite Textbox mit dem richtigen Text zu füllen, musst Du nur eins hinzuzählen.

Aber, wie gesagt, ich hätte das anders gelöst ;-)
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#9
Hallo sotaros,

das von Dir zitierte Beispiel ist eine Visual Basic Programmierung, die sicherlich nicht unter VBA zum Laufen gebracht werden kann.

Gruß Peter
to top
#10
Hallöchen,

hier jetzt der um die Markierung in Textbox1 erweiterte code:

Code:
Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'Variablendeklaration
'Variant-Array
Dim arrZeilen
'Text der textbox anhand der Zeilenenden splitten
arrZeilen = Split(TextBox1, vbLf)
'Start der Markierung berechnen, Trennung hier anhand erstem Auftreten des textes der angeklickten Zeile  
TextBox1.SelStart = Len(Split(TextBox1, arrZeilen(TextBox1.CurLine))(0)) - TextBox1.CurLine
'Länge anhand der Textlänge der angeklickten Zeile
TextBox1.SelLength = Len(arrZeilen(TextBox1.CurLine))
'Hinweis: Die Markierung wird nur dann exakt gesetzt, wenn der Text der Zeile in der Box eindeutig ist.
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Problem mit Exit-Ereignis einer Textbox Usedom 4 82 07.11.2016, 20:03
Letzter Beitrag: Usedom
  Userform: Anzeige der Textbox-Nummern Rabe 8 153 28.10.2016, 17:52
Letzter Beitrag: Gast 123
  Selektierte Werte in ListBox nacheinander in TextBox michel34497 3 145 08.10.2016, 13:00
Letzter Beitrag: michel34497
  Fokus zurück auf Textbox sharky51 9 322 23.09.2016, 21:30
Letzter Beitrag: sharky51
  Textbox via Vlookup füllen Tuempeltaucher 6 179 22.09.2016, 12:18
Letzter Beitrag: Tuempeltaucher
  Anzeige für Folgeseiten möglich? Calafati 3 102 15.09.2016, 08:04
Letzter Beitrag: Kuwer
  inhalt einer Textbox ohne leerzeichen und mit einer o vorne dran kraehenseele 4 211 11.09.2016, 01:28
Letzter Beitrag: kraehenseele
  Userform TextBox Formatierung RetroGen 5 238 23.08.2016, 08:52
Letzter Beitrag: RetroGen
  Fenster beim öffnen von Datei mit automatischer Datumsabfrage/-anzeige Wurschdbrot 5 299 14.07.2016, 12:35
Letzter Beitrag: Kuwer
  Vergleich einer Zahl durch Summierung div. anderer Zahlen/Möglichkeiten Maik 0 150 12.07.2016, 13:59
Letzter Beitrag: Maik

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste