Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zelleinträge trennen und untereinander schreiben

Zelleinträge trennen und untereinander schreiben
Stefan
Hallo zusammen,
ich habe hier im Forum eine Datei mit Makro gefunden, welches folgendes leistet:
(Ich habe zum besseren Verständnis die Beispieltabelle hochgeladen
https://www.herber.de/bbs/user/78004.xlsm)
Die Einträge in den Zellen der Spalte N werden bei Klick auf "Schaltfläche1" in die Zellen der Spalte A untereinander eingefügt.
Meine Frage:
Ist es möglich. daß bei Klick auf den Button "Schaltfläche1" eine Abfrage erscheint in die man eingeben kann aus welcher Spalte (also nicht zwingend N) die Einträge getrennt und untereinander geschrieben werden (also Auswahl der Quellspalte) und eine Eingabe in welche Spalte eingetragen wird (also nicht zwingend A als Zielspalte)?
Ich hoffe ich habe mich verständlich ausgedrückt.
Kann mir hiermit jemand weiterhelfen?
Viele Grüße
Stefan
Daten aufteilen - Alternativcode Bereichsauswahl
16.12.2011 13:38:26
NoNet
Hallo Stefan,
der Code im geposteten Beispiel ist nicht besonders elegant und übersichtlich, ich habe ihn daher nicht verwendet, sondern eine Alternative - inkl. Bereichsauswahl - programmiert :
Sub Daten_Aufteilen()
Dim lngZ As Long, lngS As Long, lngZA As Long, varI, arrW
Const strZ = ";" 'Hier das Trennzeichen festlegen !
On Error Resume Next
Set varI = Nothing
Set varI = Application.InputBox("Bitte Spalte mit Werten auswählen", Type:=8)
Select Case VarType(varI)
Case 9, 11   'Abbruch
MsgBox "Abbruch !"
Case 0, 7, 8, 8204    'Bereich, einzelne gefüllte oder leere Zelle
lngS = varI.Column
If varI = 1 Then
MsgBox "Bitte eine andere Spalte als Spalte A auswählen !", _
vbInformation, "Spalte A ist die ZIEL-Spalte !"
Else
lngZA = Cells(Rows.Count, 1).End(xlUp).Row
Range("A12:A" & lngZA).ClearContents 'Bereich Spalte A löschen
For lngZ = Columns(lngS).Find("*").Row To Cells(Rows.Count, lngS).End(xlUp).Row
If Cells(lngZ, lngS)  "" Then
arrW = Split(Cells(lngZ, lngS), strZ)
lngZA = Application.Max(12, Cells(Rows.Count, 1).End(xlUp).Row + 1)
If lngZA + UBound(arrW) + 1 > Rows.Count Then
MsgBox "Werte ab " & Cells(lngZ, lngS).Address & _
" könnne nicht mehr in Spalte A eingefügt werden !", vbCritical, _
"Spalte A ist zu voll !"
lngZ = Cells(Rows.Count, lngS).End(xlUp).Row 'anstatt Exit For
Else
Cells(lngZA, 1).Resize(UBound(arrW) + 1).Value = _
Application.Transpose(arrW)
End If
End If
Next
End If
End Select
End Sub
Gruß, NoNet
Anzeige
AW: Daten aufteilen - Alternativcode Bereichsauswahl
16.12.2011 14:05:04
Stefan
Hallo,
Vielen Dank für die Hilfe zunächst mal, allerdings habe ich noch folgendes Problem:
Bei Aktivieren des Makros erscheint eine InputBox "Eingabe Bitte Spalte mit den Werten auswählen". Wenn ich jetzt eine Spalte auswähle (z.Bsp. "M") erscheint eine InputBox "Bitte eine andere Spalte als A auswählen". Jetzt erscheint der Cursor als Eieruhr und ich kann keine Zielspalte auswählen. Wenn ich jetzt auf okay klicke erscheint das VBA-Fenster mit dem Makro.
Also die Eingabe der Quellspalte klappt, aber die Eingabe der Zielspalte nicht.
Aber eine Eingabe der Zielspalte ist auch nicht so entscheidend sollte die Modifikation zuviel Zeit in Anspruch nehmen, da ich hier einfach eine Spalte A einfügen kann.
Viele Grüße
Stefan
Anzeige
Sorry, mein Fehler : Ändere varI auf lngS
16.12.2011 14:25:11
NoNet
Hallo Stefan,
sorry, das war mein Fehler : Ich habe den (fast fertigen) Code getestet und er funktioniert 1A.
Ganz zum Schluss ist mir noch eingefallen, dass man Spalte A nicht auswählen darf und habe diese Prüfung eingebaut - und dann nicht mehr getestet (*Asche auf mein Haupt*).
Jetzt, da Du es schreibst fällt mir auf : Es muss heissen
    Case 0, 7, 8, 8204    'Bereich, einzelne gefüllte oder leere Zelle
lngS = varI.Column
If lngS = 1 Then
und NICHT (wie oben gepostet)
    Case 0, 7, 8, 8204    'Bereich, einzelne gefüllte oder leere Zelle
lngS = varI.Column
If varI = 1 Then

Nach dieser Änderung sollte es klappen !
Gruß, NoNet
Anzeige
AW: Sorry, mein Fehler : Ändere varI auf lngS
16.12.2011 14:37:10
Stefan
Hallo,
Vielen Dank. Funktioniert. Nur ein Problem gibt es noch. Nach Eingabe der gewünschten Spalte in die InputBox und klicken auf "OK" erscheint das VBA-Codefenster. Wenn ich jetzt wieder zurückgehe in das Excelfenster ist aber alles wie es sein soll. Wenn es noch möglich wäre den Wechsel in das VBA-Fenster zu vermeiden wäre es super.
Viele grüße
Stefan
Starte den Code per Alt+F8 oder per Button
16.12.2011 15:02:55
NoNet
Hallo Stefan,
wenn Du das Makro aus dem Tabellenblatt heraus per Alt+F8 startest, oder das Makro per Rechtsklick dem Button zuweist, wird der VBA-Editor nicht angezeigt !
Gruß, NoNet
AW: Starte den Code per Alt+F8 oder per Button
20.12.2011 11:13:03
Stefan
Hallo,
erst mal sorry für die verspätete Antwort.
Vielen Dank für die Hilfe
Viele Grüße
Stefan
Anzeige
noch eine Variante
16.12.2011 17:29:50
Erich
Hi Stefan,
nun habe ich eine Weile gebastelt, ohne zu sehen, dass NoNet schon eine Lösung erstellt hat...
Na ja, dann will ich jetzt auch trotzdem noch mein Ergebnis posten:

Option Explicit
Sub SpalteZerlegen()
Dim lngQu As Long, lngZi As Long
Dim lngA As Long, arrA, lngN As Long
Dim arrN(), zz As Long, arrZ, nn As Long
lngQu = Columns(Cells(2, 10).Value).Column   ' Quellspalte
lngZi = Columns(Cells(2, 11).Value).Column   '  Zielspalte
lngA = Cells(Rows.Count, lngQu).End(xlUp).Row - 11 'Quell-Anzahl
If lngA  "" Then
arrZ = Split(arrA(zz, 1), " ; ")
For nn = 0 To UBound(arrZ)
lngN = lngN + 1            ' mehr Platz für neue Werte?
If lngN > UBound(arrN) Then _
ReDim Preserve arrN(1 To 2 * UBound(arrN))
arrN(lngN) = arrZ(nn)      ' neuer Zielwert
Next nn
End If
Next zz
If lngN Then                        ' Ausgabe der Zielwerte
ReDim Preserve arrN(1 To lngN)
Cells(12, lngZi).Resize(lngN) = Application.Transpose(arrN)
End If
End If
End Sub
Die Spaltenvorgaben werden einfach aus der Tabelle gelesen. Hier die BeiSpielMappe:
https://www.herber.de/bbs/user/78012.xlsm
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich und: Schönes Wochenende allerseits!
Anzeige
AW: noch eine Variante
20.12.2011 11:14:23
Stefan
Hallo Erich,
auf jeden Fall Herzlichen Dank für die Hilfe.
Viele Grüße
Stefan
AW: noch eine Variante
20.12.2011 11:28:25
Stefan
Hallo Erich,
hier ist nochmal Stefan. ich habe gerade dein Makro ind der vonm dir generierten Beispieltabelle ausprobiert.
Ist wirklich klasse und genau das was mir vorschwebte. Du hast mir sehr geholfen.
Vielen dank nochmal.
Viele Grüße
Stefan

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige