Live-Forum - Die aktuellen Beiträge
Datum
Titel
15.07.2024 16:00:57
15.07.2024 15:41:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro, das Texte in andere Zellen einfügt

Makro, das Texte in andere Zellen einfügt
18.08.2019 10:31:39
Christian
Hallo,
ich bitte euch um Hilfe.
Ihr würdet mir wirklich wahnsinnig die Arbeit erleichtern.
Was ich mir vorstelle ist,
1. Ich füge Texte in Spalte A ein. In der Regel 96 Texte, in ganz wenigen Ausnahmefällen auch mal weniger, auf keinen Fall mehr.
2. Ich möchte, den 1. 4. 7. 10. usw. Text in Spalte B auflisten
3. Und den 2. 5. 8. 11. usw. Text in Spalte C. Bei den Texten in Spalte C soll es jedoch noch eine Besonderheit geben, in den meisten Fällen steht in diesen Texten eine Jahreszahl in Klammern. Wenn dem der Fall ist, soll der Text danach enden. Alles was nach der Jahreszahl kommt, soll nicht in Spalte C übernommen werden.
Und danach soll Spalte A wieder geleert werden.
Hier noch eine kleine Vorschau was ich meine:
Ich hoffe es ist verständlich
https://www.herber.de/bbs/user/131482.xlsx
Viele Grüße
Christian

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro, das Texte in andere Zellen einfügt
18.08.2019 11:07:09
Beverly
Hi Christian,
ich nehme an, dass die Jahreszahl in Klammern immer an letzter Stelle steht falls mehrmals Daten in Klammern vorkommen und dass neue Daten unterhalb der zuletzt übertragenen angefügt werden sollen?
Sub Uebertragen()
Dim lngZeile As Long
Dim lngZiel As Long
If Application.CountA(Columns(1)) > 0 Then
If Application.CountA(Columns(4)) > 0 Then
lngZiel = Columns(4).Find(What:="*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row + 1
Else
lngZiel = 1
End If
For lngZeile = 2 To Columns(1).Find(What:="*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row Step 3
Cells(lngZiel, 2) = Cells(lngZeile - 1, 1)
If InStrRev(Cells(lngZeile, 1), ")") > 0 Then
Cells(lngZiel, 3) = Left(Cells(lngZeile, 1), InStrRev(Cells(lngZeile, 1), ")"))
Else
Cells(lngZiel, 3) = Cells(lngZeile, 1)
End If
lngZiel = lngZiel + 1
Next lngZeile
End If
End Sub


Anzeige
AW: Makro, das Texte in andere Zellen einfügt
18.08.2019 11:46:54
Christian
Hallo Karin,
leider nicht, ok, das hätte ich erwähnen müssen. Am Ende der Texte kommt auch immer nochmal was in Klammern, aber du kannst davon ausgehen, dass es die vorletzten Klammern sind.
Gruß
Christian
Ich mache mich dann mal ans testen, ob das Verteilen in die Spalten klappt.
Aber das mit dem untereinander auflisten stimmt.
Und danke
alles zurück
18.08.2019 11:56:35
Christian
ich habe gerade eines festgestellt,
ich habe zwar keine Ahnung warum, aber wenn ich auf der Internetseite einfach einen anderen Bereich markiere wird nur ein Teil der Texte kopiert und die Jahreszahl ist die letzte Klammer.
Der einzige Haken an der Sache ist nur, es wird jetzt am Anfang eine Zeile mehr kopiert, also alles rutscht um eine Zeile nach unten.
Also dann in Spalte B die Zeilen 2, 5, 8, 11 usw. und in Spalte C 3, 6, 9, 12 usw.
Aber auf dem Weg ist dann sichergestellt, dass die richtigen Klammern erwischt werden.
Gruß
Christian
Anzeige
Wenn die Text...
18.08.2019 12:41:36
Beverly
...nicht ab Zeile 2 sondern 3 beginnen, dann ändere For lngZeile = 2 in For lngZeile = 3


AW: Makro, das Texte in andere Zellen einfügt
18.08.2019 13:14:59
Christian
Hallo Karin,
so ganz leider immer noch nicht. Auch wenn jetzt die richtigen Zellen kopiert werden.
Mein Ziel war es, das beliebig oft mit neuen Texten zu wiederholen.
Daher würde ich mir noch 3 Änderungen wünschen.
1. Bislang werden Spalte B und C überschrieben, wenn bereits dort etwas steht, wäre schön wenn neue Texte unten angefügt würden.
2. Wäre schön, wenn wie bereits im ersten Beitrag beschrieben, Spalte A wieder geleert wird, wenn die Texte kopiert sind.
3. und was noch ganz toll wäre wenn das Makro von allein startet, wenn ich etwas in Spalte A einfüge.
Danke
Christian
Anzeige
AW: Makro, das Texte in andere Zellen einfügt
18.08.2019 15:25:00
Beverly
Hi Christian,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngZeile As Long
Dim lngZiel As Long
If Target.Cells(1).Column = 1 Then
If Application.CountA(Columns(1)) > 0 Then
If Application.CountA(Columns(3)) > 0 Then
lngZiel = Columns(3).Find(What:="*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row + 1
Else
lngZiel = 1
End If
For lngZeile = 3 To Columns(1).Find(What:="*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row Step 3
Cells(lngZiel, 2) = Cells(lngZeile - 1, 1)
If InStrRev(Cells(lngZeile, 1), ")") > 0 Then
Cells(lngZiel, 3) = Left(Cells(lngZeile, 1), _
InStrRev(Cells(lngZeile, 1), ")"))
Else
Cells(lngZiel, 3) = Cells(lngZeile, 1)
End If
lngZiel = lngZiel + 1
Next lngZeile
Columns(1).ClearContents
End If
End If
End Sub

Code ins Codemodul des Tabellenblattes kopieren.


Anzeige
AW: Makro, das Texte in andere Zellen einfügt
18.08.2019 17:51:17
Christian
Hallo Karin,
das sieht doch super aus, so hatte ich es mir vorgestellt.
Danke für die Mühe und die Geduld und noch einen schönen Sonntag.
Eine Frage hätte ich noch aus Neugierde, kannst du mir mal allgemein einen Überblick geben, wann ein Makro in ein Arbeitsblatt, die gesamte Mappe oder in ein Modul kommt?
Danke
Christian
AW: Makro, das Texte in andere Zellen einfügt
18.08.2019 18:55:31
Beverly
Hi Christian,
ganz grob gesagt:
- Code im Codemodul DieseArbeitsmappe wenn beim Öffnen/Schließen/Speichern/Verlassen/Aktivieren der Arbeitsmappe Code ausgeführt werden sowie für alle im Code festgelegten Tabellenblätter gelten soll
- Code im Codemodul eines Tabellenblattes wenn er nur von diesem Tabellenblatt bzw. von auf diesem Tabellenblatt befindlichen ActiveX-Steuerelementen aus gestartet werden soll
- Code im Standardmodul, wenn von den unterschiedlichsten Objekten der Arbeitsmappe aus darauf zugegriffen werden soll


Anzeige

325 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige