Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
992to996
992to996
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Multiline Textbox

Multiline Textbox
09.07.2008 21:52:14
Bernd
Hallo,
Ich benutze in einem Project eine Excel- Multiline Textbox. Der Inhelt soll dann in ein Tabellenformular eingetragen werden.
Zur Zeit zerlege ich den langen Text in definierte Längen und trage Ihn Zeile für Zeile in die Tabelle ein. Nun habe ich im Internet Hinweise und Teilcode gefunden wie man die Zeilen einzeln aus der Textbox auslesen kann. Ich habe das mal probiert, bin aber nicht klargekommen. Kann mich da jemand mal durchsprechen?
Die Textbox1 steht beispielsweise in der Userform1.
Gruß
Bernd

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Multiline Textbox
09.07.2008 22:06:16
andy027
Hallo Bernd,
Deine Frage zur Textbox kann ich Dir nicht aber auf Anhieb beantworten, aber ich hätte einen Alternativ-vorschlag: Wie wärs wenn Du in der userform eine Listbox (oder auch Listenfeld) statt einer Textbox verwendest. Da kann man relativ einfach per VBA reinschreiben oder auch den kompletten Inhalt z.B. in eine txt-Datei exportieren. Ich verwende eine Listbox in einer userform als Ausgabe-Medium, das dem Nutzer diverse Informationen anzeigt. Wäre das was für Dich? Falls ja, kann ich gerne den entsprechenden Code ins Forum stellen.
Gruß,
Andreas B.

AW: Multiline Textbox
10.07.2008 08:18:00
Bernd
Hallo Andreas,
Eine Listbox wollte ich nicht, den reingeschrieben wird über die Tastatur. Der Inhalt der Textbox soll dann übernommen werden.
Gruß
Bernd

Anzeige
AW: Multiline Textbox
09.07.2008 22:17:00
Daniel
Hi
lade doch mal eine Beispieldatei und den Code, den du nicht verstehst, hoch.
dann kann man leichter was erklären.
Gruß, Daniel

AW: Multiline Textbox
10.07.2008 08:32:00
Bernd
https://www.herber.de/bbs/user/53707.xls
Hallo Daniel,
danke erst einmal für Deine Antwort.
Ich habe den Anfang meiner Bemühungen malhochgeladen.
Eine Userform mit Textbox und einem Eintragbutton, beim dem sich der inhalt der Textbox beispielsweise in die Spalte A Zeile für Zeile schreiben soll. Nun habe ich aus dem VB-Archiv mir den Artikel zum Auslesen der Multiline Textbox angeschaut und versucht die Moduke zu plazieren. Dabei bin ich dann schon auf die Nase gefallen und hatte erst einmal aufgehört.
Ich denke man muss zuerst die Anzahl der benutzen Zeilen ermitteln und dann den Zeileninhalt Zeile für Zeile auslesen und in die Tabelle schreiben. Da stehe ich nun..
Gruß
Bernd

Anzeige
AW: Multiline Textbox
11.07.2008 02:18:00
Daniel
Hallo
probier mal diesen Code für den Eintragebutton:

Private Sub eintragen_Click()
Dim Zelle As Range
Dim txt
Dim TextTeile() As String
Set Zelle = Range("A1")
TextTeile = Split(Replace(TextBox1.Text, Chr(10), ""), Chr(13))
For Each txt In TextTeile
Zelle.Value = txt
Set Zelle = Zelle.Offset(1, 0)
Next
End Sub


allerdings werden nur Zeilenwechesel berücksichtigt, die der Anwender eingegeben hat (Shift + Enter)
Gruß, Daniel

AW: Multiline Textbox
11.07.2008 15:18:00
Bernd
hallo Daniel,
entschuldige die lange Antwortzeiten. Ich bin zur Zeit viel unterwegs.
Den Code probiere ich aus. Das heisst aber man muss an jedem Ende der textboxzeile ein Shift+Enter geben.
Das birgt aber auch die Gefahr von Eingabefehlern. Gibt es nicht auch die Möglichkeit die Textbox so auszulesen, wie Sie nach der Eingabe aussieht. Ich habe da im VB Archiv was gelesen mit Aufruf von API's. Ein Teil des Codes habe ich in die Mudole kopiert. Mein Problem ist auch in der Verknüpfung dieser Module. Zum teil weiss ich nicht ob diese Teile dort überhaupt richtig plaziert sind. Weisst Du um diese Möglichkeit.
Gruß
Bernd

Anzeige
AW: Multiline Textbox
12.07.2008 14:20:00
Daniel
HI
ok, hier ne andere Mögichkeit, die einzelnen Textboxzeilen in Zeilen zu übertragen.

Private Sub CommandButton1_Click()
Dim i As Long
With TextBox1
.SetFocus
For i = 1 To .TextLength
.SelStart = i
.SelLength = 1
Select Case .SelText
Case Chr(13), Chr(10)
Case Else
Cells(.CurLine + 1, 1).Value = Cells(.CurLine + 1, 1).Value & .SelText
End Select
Next
End With
End Sub


Gruß, Daniel

AW: Multiline Textbox
13.07.2008 17:14:00
Bernd
Hallo Daniel,
vielen Dank für Deine Hilfe. Die erste Variante habe ich mal ausprobiert. Funktioniert gut.
Die zweite Variante werde ich natürlich auch testen. Ich melde mich dann noch einmal.
Danke
Gruß aus Halle
Bernd

Anzeige
AW: Multiline Textbox
14.07.2008 08:02:55
Bernd
Hallo Daniel,
ich bin begeistert. Das funtkioniert wirklich gut. Nur das allererste Zeichen der Textbox wird abgeschnitten. Ich werde mal probieren i auf 0 zu setzen.
Gruß
Bernd

AW: Multiline Textbox
14.07.2008 11:15:00
Bernd
Hallo Daniel,
ich habe noch einmal eine Datei hochgeladen. Darin ist Dein Code eingefügt.
Mit dem Beispiel hat es prima geklappt. Mit dem eigentlichen Projekt habe ich noch ein paar Probleme
Im Beispiel genügte es mir, wenn der Text in Spalte 1 zeile 1 begann.
Ich muss aber in Zeile 28 Spalte 2 beginnen. Im vorliegenden Code beginnt er zwar in Spalte 28 aber schreibt 1 Buchtstaben unter den anderen und nicht die ganze Zeile. Was habe ich jetzt wieder falsch gemacht.
Gruß
Bernd
https://www.herber.de/bbs/user/53794.doc

Anzeige
AW: Multiline Textbox
14.07.2008 23:37:00
Daniel
HI
der wichtigste Fehler ist erstmal, daß du ne Worddatei und keine Exceldatei hochgeladen hast.
Wenn ich fehler suchen soll, dann muss ich auch was ausprobieren können, dazu brauche ich dann schon ne funktionsfähige Datei, die dann auch den Fehler enthält.
der 2. Fehler ist, daß du einfach mal pauschal "On Error Resume Next" über den Code drüber schreibst.
sowas setzt man nur ganz geziehlt für einzelne Zeilen ein, aber nie pauschal für den ganzen Code.
denn so wird man nur sehr schwer die Fehlerursache finden, man ärgert sich nur über seltsame und nicht nachvollziebare Ergebnisse.
Gruß, Daniel

Anzeige
AW: Multiline Textbox
15.07.2008 07:53:00
Bernd
https://www.herber.de/bbs/user/53820.xls
Hallo Daniel,
habe also meine Fehler korrigiert und die Testabelle hochgeladen. Eine Variante mit Deinem ersten Code, der wirklich gut funktioniert. Der Text wird das Arbeitsblatt Tabelle eingetragen. Damit man nicht so viel tippen muss, steht im Formular Text, der beim Initialisieren der Textbox eingelesen wird. Unter dem Button eintragen läuft dann die aus deinem Code abgeleitete Variante. Der Text wird dann in dass Arbeitsblatt Testtabelle geschrieben ab Zeile 28 Spalte 2 . Sch.... alle Buchstaben untereinander.
Gruß
Bernd

Anzeige
AW: Multiline Textbox
15.07.2008 22:53:17
Daniel
HI
das ist der entscheidende Teil deines Makros:

tbgrund1.SetFocus
For i = 1 To tbgrund1.TextLength
tbgrund1.SelStart = i
tbgrund1.SelLength = 1
Select Case tbgrund1.SelText
Case Chr(13), Chr(10)
Case Else
Cells(zeile + 5, 2).Value = Cells(zeile + 5, 2).Value & tbgrund1.SelText
End Select
zeile = zeile + 1
Next


wichtig ist die Zeile "zeile = zeile +1" , hier wird der Zeilenzähler erhöht, dh. die neue ausgabezeile festgelgt.
geh mal den Code gedanklich durch und überlege dir, dann wann im Code eine neue Zeile festgelegt wird und dann denkmal darüber nach, wann das eigentlich passieren sollte und wo die Zeile plaziert werden müsste, damit es zum richtigen zeitpunkt passiert.
vielleicht hift es dir auch, den Code im Einzelstepmodus durchzugehen, dazu
- vor Makrostart im entsprechenden makro einen haltepunkt setzten (auf den linken rand des Codebereichs klicken, es erscheint ein brauner punkt. zum entfernen einfach auf den Punkt klicken
- jetzt das Makro starten, beim Haltepunkt stoppt der Ablauf
- jetzt kannst du den Ablauf Zeile für Zeile durchklicken, (mit F8 oder mit der Symbolleiste "Debuggen") und dir dabei die Variablenwerte anzeigen lassen (im Local-Fenster oder einfach mit der Maus drüberfahren
vielleicht findest du dann selbst heraus, wo das Problem liegt und wie es zu lösen ist.
Viel spass beim Knobeln, wenn du nicht weiterkommst, frag nochmal nach.
aber mach lieber nen neuen Tread auf, wir sind schon ziemlich weit unten.
Gruß, Daniel

Anzeige
AW: Multiline Textbox
16.07.2008 08:09:12
Bernd
Danke Daniel,
da werde ich mal die Knobelrunde einlegen. Obwohl ich nicht weiß warum Du auf einmal in dieser Zeile
Cells(zeile + 5, 2).Value = Cells(zeile + 5, 2).Value & tbgrund1.SelText
den Wert zeile+1 auf zeile + 5 erhöht hast.
Setze ich die Erhöhung des Zeilenwertes unter Case Chr(13), Chr(10)
dann schreibt mir das Programm wieder eine endlose Zeile
tbgrund1.SetFocus
For i = 1 To tbgrund1.TextLength
tbgrund1.SelStart = i
tbgrund1.SelLength = 1
Select Case tbgrund1.SelText
Case Chr(13), Chr(10)
zeile = zeile + 1
Case Else
Cells(zeile + 5, 2).Value = Cells(zeile + 5, 2).Value & tbgrund1.SelText
End Select
Next

Anzeige
AW: Multiline Textbox
16.07.2008 08:39:00
Bernd

Private Sub CommandButton1_Click()
Dim i As Long
Sheets("Tabelle").Activate
With tbgrund1
.SetFocus
For i = 0 To .TextLength
.SelStart = i
.SelLength = 1
Select Case .SelText
Case Chr(13), Chr(10)
MsgBox "Zeile zu Ende"
Case Else
Cells(.CurLine + 1, 2).Value = Cells(.CurLine + 1, 2).Value & .SelText
End Select
Next
End With
Sheets("formular").Activate
End Sub


Hallo Daniel,
ich habe die Originalversion nocheinmal durchlaufen lassen und per Debugging beobachtet. Ich kann nicht erkennen, wo das Programm erkennt, dass nun in eine neue Zeile geschrieben werden soll. Meine Änderung auf Spalte 2 wurde klaglos ausgeführt. Ich habe dann auch mal die Msgbox als Teststopp einfügt, diese wurde aber nie angefahren.
?
Gruß
Bernd

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge