Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Mehrere Zellen in Eine kopieren, Zeilenumbruc
Chris
Hallo Excel/VBA Gemeinde :)
Ich stehe vor einem für mich aktuell unlösbaren Problem und benötige an dieser Stelle prof. Hilfe, da mein Können/Wissen mich hier im Stich lässt.
Folgende Ausgangssituation:
Ich hab zwei Tabellenblätter "x" und "y".
Im Tabellenblatt "x" hat man die Möglichkeit bestimmte Fragen per OptionButtons zu beantworten. Die einzelnen Fragen kann man in der "Nachbarzelle" auch kommentieren.
Sobald die Fragen beantwortet wurden, wird das Ergebnis in das Tabellenblatt "y" kopiert. Dies funktioniert soweit auch alles wunderbar.
Was funktioniert nicht?
In der Zelle F9 und F10 auf dem Sheet "x" kann jeweils ein Kommentar eingetragen werden. Ich bekomme es nicht hin, dass die beiden Kommentare in eine Zelle (U5 - Sheet "y") kopiert werden. Wenn lediglich in Zelle F9 ein Kommentar vorhanden ist, darf kein Zeilenumbruch eingefügt werden. Haben wir einen Kommentar in Zelle F9 und F10 soll ein Zeilenumbruch eingefügt werden:
Kommentar (Zelle F9)
Zeilenumbruch
Kommentar (Zelle F10)
Mein bisheriger Code:

Sheets("x").Select
Range(Cells(9, 6), Cells(10, 6)).Select
Selection.Copy
Sheets("y").Select
Range("U5").Select
For i = 1 To 5700
If ActiveCell.Value "" Then ActiveCell.Offset(1, 0).Select Else Exit For
Next i
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Habe es auch schon mit:

Sheets("x").Cells(9, 6) & Chr(10) & Sheets("x").Cells(10, 6)

probiert, da bekomme ich aber IMMER einen Zeilenumbruch.
Wenn mich irgendjemand auch nur ansatzweise verstanden hat, Danke ich jetzt schon für jegliche weitere Hilfestellung :)
Grüße
Chris

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

Betreff
Benutzer
Anzeige
Vorschlag
24.02.2011 10:09:12
Erich
Hi CVhris,
probier mal

Option Explicit
Sub TextZusammen()
Dim strT As String
With Sheets("x")
strT = .Cells(9, 6)
If strT  "" And Not IsEmpty(.Cells(10, 6)) Then _
strT = strT & vbLf
Sheets("y").Cells(5, 21) = strT & .Cells(10, 6)
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Vorschlag
24.02.2011 10:58:29
Chris
Hi Erich,
Code funktioniert soweit.
Vielen Dank.
AW: Vorschlag
24.02.2011 11:56:02
Chris
Weiterführende Frage... :)
Jetzt möchte ich noch weitere Kommentarfelder hinzufügen...
Habe deinen Code einfach mal weiter ausgebaut...
Sub TextZusammen()
Dim Zeile9 As String
Dim Zeile10 As String
Dim Zeile11 As String
With Sheets("Erstbearbeitung")
Zeile9 = .Cells(9, 6)
Zeile10 = .Cells(10, 6)
Zeile11 = .Cells(11, 6)
If Zeile9  "" And Not IsEmpty(.Cells(10, 6) & .Cells(11, 6)) Then _
Zeile9 = Zeile9 & vbLf & Zeile10 & vbLf & Zeile11
Sheets("Auswertung_Erstbearbeitung").Cells(5, 21) = Zeile9
End With
End Sub


usw....
Nehmen wir an ich habe nun vier Kommentarfelder...
Wie lässt es sich realisieren das wenn ich z.B.
Kommetarfeld F9 = leer
Kommentarfeld F10 = Testkommentar1
Kommentarfeld F11 = leer
Kommentarfeld F12 = Testkommentar2
In ein Zelle kopieren lässt:
Testkommentar1
Zeilenumbruch
Testkommentar2
Ich hab es soweit hinbekommen, dass er die Kommentare immer in die gleiche Zelle kopiert, nur übernimmt er auch natürlich den Zeilenumbruch.
Wie kann ich dem Code quasi sagen "Wenn das Kommentarfeld leer ist, kopiere nicht und auch keine Zeilenumbruch" :D
Anzeige
noch zwei Vorschläge
24.02.2011 12:59:34
Erich
Hi Chris,
hier mal eine Version für 3 und eine für viele Zellen:

Sub TextZusammen3()
Dim strT As String
With Sheets("x")
strT = .Cells(9, 6)
If strT  "" And Not IsEmpty(.Cells(10, 6)) Then _
strT = strT & vbLf
strT = strT & .Cells(10, 6)
If strT  "" And Not IsEmpty(.Cells(11, 6)) Then _
strT = strT & vbLf
Sheets("y").Cells(5, 21) = strT & .Cells(11, 6)
End With
End Sub
Sub TextZusammenX()
Dim strT As String
With Sheets("x")
strT = .Cells(9, 6)        ' 1. Zelle
For zz = 10 To 12          ' Schleife über weitere Zellen
If strT  "" And Not IsEmpty(.Cells(zz, 6)) Then _
strT = strT & vbLf
strT = strT & .Cells(zz, 6)
Next zz
Sheets("y").Cells(5, 21) = strT
End With
End Sub
Von "Kommentaren" solltest du hier gar nicht sprechen, auch wenn das der fachliche Inhalt der Zellen ist.
In Excel sind Kommentare etwas ganz anderes. Statt "Feld" wäre "Zelle" passender.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: noch zwei Vorschläge
25.02.2011 08:35:10
Chris
Mein Retter in der Not :)
Code funktioniert genau so wie ich es mir vorgestellt habe.
Vielen Dank!
AW: noch zwei Vorschläge
25.02.2011 09:36:48
Chris
Hallo Erich,
nochmal danke für die kompetente Hilfe...
soweit funktioniert alles. nun habe ich ein letztes problem, welches ich bisher nicht bedacht habe...
wenn im sheet "y" die zeile 5 nun ausgefüllt ist, springt er beim folgenden kopiervorgang nicht in die nächste zeile (6).
ich kann den kopiervorgang aus dem sheet "x" unendlich mal wiederholen. er muss nur im sheet "y" immer in die nächste zeile springen.

For i = 1 To 5700
If ActiveCell.Value "" Then ActiveCell.Offset(1, 0).Select Else Exit For
Next i

...in diese Richtung habe ich jetzt schonmal probiert, klappt aber natürlich nicht.
Was muss ich also in deinen Code
Sub TextZusammenX()
Dim strT As String
With Sheets("x")
strT = .Cells(9, 6)        ' 1. Zelle
For zz = 10 To 12          ' Schleife über weitere Zellen
If strT  "" And Not IsEmpty(.Cells(zz, 6)) Then _
strT = strT & vbLf
strT = strT & .Cells(zz, 6)
Next zz
Sheets("y").Cells(5, 21) = strT
End With
End Sub


einfügen, dass er ich die nächste zeile springt, wenn ich zeile davor schon ausgefüllt ist.
danke und gruß
chris
Anzeige
AW: noch zwei Vorschläge
25.02.2011 10:30:44
Chris
Hallo Erich,
nochmal danke für die kompetente Hilfe...
soweit funktioniert alles. nun habe ich ein letztes problem, welches ich bisher nicht bedacht habe...
wenn im sheet "y" die zeile 5 nun ausgefüllt ist, springt er beim folgenden kopiervorgang nicht in die nächste zeile (6).
ich kann den kopiervorgang aus dem sheet "x" unendlich mal wiederholen. er muss nur im sheet "y" immer in die nächste zeile springen.

For i = 1 To 5700
If ActiveCell.Value "" Then ActiveCell.Offset(1, 0).Select Else Exit For
Next i

...in diese Richtung habe ich jetzt schonmal probiert, klappt aber natürlich nicht.
Was muss ich also in deinen Code
Sub TextZusammenX()
Dim strT As String
With Sheets("x")
strT = .Cells(9, 6)        ' 1. Zelle
For zz = 10 To 12          ' Schleife über weitere Zellen
If strT  "" And Not IsEmpty(.Cells(zz, 6)) Then _
strT = strT & vbLf
strT = strT & .Cells(zz, 6)
Next zz
Sheets("y").Cells(5, 21) = strT
End With
End Sub


einfügen, dass er ich die nächste zeile springt, wenn ich zeile davor schon ausgefüllt ist.
danke und gruß
chris
Anzeige
und der dritte
25.02.2011 12:30:55
Erich
Hi Chris,
probier mal

Sub TextZusammenXY()
Dim strT As String
With Sheets("x")
strT = .Cells(9, 6)        ' 1. Zelle
For zz = 10 To 12          ' Schleife über weitere Zellen
If strT  "" And Not IsEmpty(.Cells(zz, 6)) Then _
strT = strT & vbLf
strT = strT & .Cells(zz, 6)
Next zz
End With
With Sheets("y")
zz = 5
While Not IsEmpty(.Cells(zz, 21))
zz = zz + 1
Wend
.Cells(zz, 21) = strT
End With
End Sub
Wäre es (besonders für dich selbst) nicht sinnvoll, zuerst das Zeil der ganzen Geschichte zu klären?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: und der dritte
25.02.2011 13:33:11
Chris
Dritte und Letzte :)
Ja, da hast du natürlich recht...
Hätte vorab über das Gesamte nachdenken sollen und wie es am Ende aussehen soll.
Das Thema ist jetzt durch, es funktionert. Danke nochmal.
Beim nächsten mal komm ich etwas besser vorbereitet in das Forum ;)
Greetings
Chris

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige