Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
184to188
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
184to188
184to188
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellen nur für Text verbinden

Zellen nur für Text verbinden
27.11.2002 15:28:13
Michi
Mahlzeit !

Schwierig zu erklären das Problem, also :

Zelle A1,A2,A3 haben jeweils Platz für sagen wir mal 140 Zeichen
Wenn ich jetzt in Zelle A1 , 200 Zeichen Eingebe sollen die
ersten 140 Zeichen in Zelle A1 zu sehen sein , die nächsten 140 Zeichen in Zelle A2 und der Rest in A3 am besten noch die Wörter beachtend.
Vom prinzip her also ein Zeilenumbruch der auf die nächste Zelle springt, ohne das der Benutzer selber darauf achten muß wann die Zeile zu Ende ist.
Ich hoffe das war verständlich !

Also bitte HIIIIIIIIIIIILLLLLLLLLFFFFFFEEEEEEEEE

Michi

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Zellen nur für Text verbinden
27.11.2002 15:50:31
Steffen D
Hallo Michi,

ich habe dass mal ausprobiert, und es klappt bei mir:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Länge = Len(Target) Else Exit Sub
temp = Target.Value
If Länge > 140 And Länge <= 280 Then
Target.Value = Left(temp, 140)
Target.Offset(0, 1).Value = Right(temp, Länge - 140)
End If
If Länge > 280 Then
Target.Value = Left(temp, 140)
Target.Offset(0, 1).Value = Mid(temp, 141, 140)
Target.Offset(0, 2).Value = Right(temp, Länge - 280)
End If
End Sub


diesen Code musst du in den Code der betreffender tabelle kopieren.


Gruss
Steffen D

Anzeige
Re: Zellen nur für Text verbinden
28.11.2002 07:52:13
Michi
Vielen Dank Steffen

Das sieht ja schon mal nicht schlecht aus.
Nur:
1. der Code verschiebt die Zeile nach rechts nicht nach unten also von A1 nach B1 usw.
2. wenn ich jetzt die erste Zeile Lösche hab ich ein fehler und Excel will debuggen.

Vieleicht noch als Zusatz:
Kann man die Wörter berücksichtigen, sprich nicht mitten im Wort trennen ?

Re: Zellen nur für Text verbinden
28.11.2002 08:05:31
Steffen D
Hallo Michi,

hiermit müsste es gehen:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Länge = Len(Target) Else Exit Sub
temp = Target.Value
If Länge > 140 And Länge <= 280 Then
Target.Value = Left(temp, 140)
Target.Offset(1, 0).Value = Right(temp, Länge - 140)
End If
If Länge > 280 Then
Target.Value = Left(temp, 140)
Target.Offset(1, 0).Value = Mid(temp, 141, 140)
Target.Offset(2, 0).Value = Right(temp, Länge - 280)
End If
End Sub

Aber das mit dem Wörtern, weiß ich nicht wie man das machen könnte, da musst du wahrscheinlich nach einer Leerstelle suchen und dann an dieser Stelle trennen.


Gruss
Steffen

Anzeige
Re: Zellen nur für Text verbinden
28.11.2002 08:27:22
Michi
Danke nochmal.

Das mit dem nach unten verschieben klappt wunderbar, aber beim löschen irgend einer Zelle meckert Excel sofort und will debuggen ? Muß ich irgendwas deswegen noch beachten oder kann man diese Meldung irgendwie auschalten ?

Um dein Code zu erweitern auf noch mehr Zellen wie muß ich da vorgehen ??

Danke für deine Geduld mit mir

Gruß Michi


Re: Zellen nur für Text verbinden
28.11.2002 08:55:20
Steffen D
Hallo Michi,

hab gerade rumgemacht, probiermal diesen Code:
(er ist jetzt ein bisschen länger geworden, wörter werden erkannt und das ganze dann auf vier zeilen verteilt)

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
temp = Target.Value
länge = Len(temp)
If Target.Column = 1 Then
If länge = 0 Then Exit Sub
If länge > 140 And länge <= 280 Then
trennen = InStr(130, temp, " ", vbTextCompare)
erste = Left(temp, trennen)
zweite = Right(temp, länge - trennen)
End If
If länge > 280 And länge <= 420 Then
trennen = InStr(130, temp, " ", vbTextCompare)
trennen2 = InStr(270, temp, " ", vbTextCompare)
erste = Left(temp, trennen)
zweite = Mid(temp, trennen + 1, trennen2)
dritte = Right(temp, länge - trennen2)
Else
dritte = ""
vierte = ""
End If
If länge > 420 Then
trennen = InStr(130, temp, " ", vbTextCompare)
trennen2 = InStr(270, temp, " ", vbTextCompare)
trennen3 = InStr(400, temp, " ", vbTextCompare)
erste = Left(temp, trennen)
zweite = Mid(temp, trennen + 1, trennen2 - trennen)
dritte = Mid(temp, trennen2 + 1, trennen3 - trennen2)
vierte = Right(temp, länge - trennen3)
Else
dritte = ""
vierte = ""
End If
Target.Value = erste
Target.Offset(1, 0).Value = zweite
Target.Offset(2, 0).Value = dritte
Target.Offset(3, 0).Value = vierte
Else
Exit Sub
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub


Gruss
Steffen D

Anzeige
Re: Zellen nur für Text verbinden
28.11.2002 09:06:13
Steffen D
Hi,
es waren noch kleine Fehler drin :-)
hier die verbesserte Version:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
temp = Target.Value
länge = Len(temp)
If Target.Column = 1 Then
If länge = 0 Then Exit Sub
If länge > 140 And länge <= 280 Then
trennen = InStr(130, temp, " ", vbTextCompare)
erste = Left(temp, trennen)
zweite = Right(temp, länge - trennen)
End If
If länge > 280 And länge <= 420 Then
trennen = InStr(130, temp, " ", vbTextCompare)
trennen2 = InStr(270, temp, " ", vbTextCompare)
erste = Left(temp, trennen)
zweite = Mid(temp, trennen + 1, trennen2 - trennen)
dritte = Right(temp, länge - trennen2)
Else
dritte = ""
vierte = ""
End If
If länge > 420 Then
trennen = InStr(130, temp, " ", vbTextCompare)
trennen2 = InStr(270, temp, " ", vbTextCompare)
trennen3 = InStr(400, temp, " ", vbTextCompare)
erste = Left(temp, trennen)
zweite = Mid(temp, trennen + 1, trennen2 - trennen)
dritte = Mid(temp, trennen2 + 1, trennen3 - trennen2)
vierte = Right(temp, länge - trennen3)
Else
vierte = ""
End If
Target.Value = erste
Target.Offset(1, 0).Value = zweite
Target.Offset(2, 0).Value = dritte
Target.Offset(3, 0).Value = vierte
Else
Exit Sub
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub


gruss
Steffen

Anzeige
Super....aber.... :-)
28.11.2002 10:07:19
Michi
Nich erschrecken Steffen nur 'ne kleinigkeit noch dann las ich dich auch in Ruhe !!!! Versprochen :-)

Also wenn ich die zellen lösche und einen neuen text eingebe teilt er es nicht mehr . Muß ich den Code dann nochmal neu starten?

Vieleicht sollt ich mal'n VBA-Kurs mitmachen, hätt ja Vorteile ! :-))

Gruß Michi

Re: Super....aber.... :-)
28.11.2002 10:27:52
Steffen D
Hi,

da finde ich auch komisch, bei mir macht er auch nichts,
da kann ich dir leider nicht weiterhelfen.

Wenn du die datei wieder neu aufmachst dann gehts wieder, ich weiß nicht woran das liegen könnte.

musst du mal die Experten fragen, denn ich bin auch erst ein VBA-Anfänger.

poste ein neues thema mit diesem Code, vielleicht kann dir ja jemand anders weiterhelfen.


gruss
Steffen D

Anzeige
Na gut
28.11.2002 10:54:18
Michi
Trotzdem vielen Dank !!!!!

125 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige