Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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-2019+365)
Antworten 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
Antworten 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-2019+365)
Antworten 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.
Antworten 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
Antworten 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
Antworten 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 Smile

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 Wink
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten 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
Antworten 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-2019+365)
Antworten Top


Gehe zu:


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