Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
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
Inhaltsverzeichnis

Zeile einfügen wenn Zelle gefüllt

Zeile einfügen wenn Zelle gefüllt
29.07.2015 12:44:36
ronforum
Hallo :)
ich habe mich schon informiert, aber so richtig komm ich leider nicht auf die Lösung. Ich würde gerne in bestimmten Fällen eine Zeile einfügen.
Die Arbeitsmappe enthält eine variable Anzahl an Tabellenblättern. Jedes Tabellenblatt enthält Daten die in einem Übersichtsblatt gesammelt werden. Die Sammlung geschieht bereits über ein Makro.
Es gibt nun eine Spalte in die möglicherweise mehr als nur eine Zelle eingefügt werden muss. Zum einen soll sie die Daten aus Zelle F9 kopieren werden, und die Zellen F12 und F15 überprüft werden. Falls diese Daten enthalten soll für jede gefüllte Zelle eine neue Zeile erstellt werden und der Wert unter dem bereits kopierten Wert eingefügt werden.
Habt ihr dafür einen Ansatz?
Beste Grüße und vielen Dank
Ron

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

Betreff
Datum
Anwender
Anzeige
Ansatz
30.07.2015 18:47:06
Frank
Hallo Ron,
der Ansatz wäre, das Ganze mal mit eingeschaltetem Makrorekorder aufzuzeichnen und das dann den Erfordernissen entsprechend zu ändern. Die Prüfungen und Bedingungen hast Du ja schon alle aufgezählt.
Kriegst Du das nicht hin, ist VBA bescheiden zu dick aufgetragen und das Ganze ein Fall dafür: https://www.herber.de/develop.html
Grüsse,
Frank

AW: Zeile einfügen wenn Zelle gefüllt
03.08.2015 16:08:33
team11team
Hi Frank,
danke für diese eher wenig hilfreiche Antwort.
Vielleicht kann mir jemand anderes helfen. Mein Ansatz sieht bis jetzt so aus. Klappt aber noch nicht so ganz.
Sub Test()
Dim lngSheets   As Long
Dim t           As Long
Dim p           As Long
lngSheets = ThisWorkbook.Sheets.Count
For t = 9 To 1 Step -1
For p = 1 To lngSheets
If ThisWorkbook.Sheets(p).Cells(12, 6).Value  "" Then
Rows(t).Insert shift:=xlDown
ThisWorkbook.Sheets(p).Cells(12, 6).Value = Cells(t + 1, 11).Value
t = t + 2
Else
t = t + 1
End If
Next p
Next t
End Sub
Kann mir jemand helfen den Ansatz weiterzuentwickeln, so das er läuft.
Vielen Dank
Grüße
Ron

Anzeige
AW: Zeile einfügen wenn Zelle gefüllt
03.08.2015 16:37:46
Frank
Hallo Ron,
Ja, ich schon wieder...
So ein Posting sieht man doch schon lieber. Das zeigt, dass sich der Fragesteller schon mal Gedanken gemacht hat.
Rows(t).Insert shift:=xlDown da gehört ein Zellbezug vorangestellt, damit XL weiss, wo es einfügen soll. So, wie es jetzt da steht, passiert das bei der eher zufällig durch Cursor ausgewählten Zelle.
Was jetzt
Grüsse,
Frank

AW: Zeile einfügen wenn Zelle gefüllt
04.08.2015 14:47:20
ronforum
Hi Frank,
wir näheren uns einer guten Antwort ;)
Der Zellenbezug ist doch die Variable "t" durch die er wissen soll welche Zeile er nimmt um dann einzufügen. Reicht dieser Bezug noch nicht?
Wie würdest du es machen?
Gruß
Ron

Anzeige
AW: Zeile einfügen wenn Zelle gefüllt
04.08.2015 15:01:50
EtoPHG
Hallo Ron oder Hans oder Team oder wer auch immer!,
Ich würde ihm(?) noch mitteilen, zu welchem Workbook und welchem Worksheet das Rows(t) gehört! Im Vergleich machst du das ja auch!
Gruess Hansueli

AW: Zeile einfügen wenn Zelle gefüllt
04.08.2015 15:25:14
ronforum
Hi Hansueli,
sorry bin mit den meinem neuen und alten Benutzer durcheinander gekommen.
Ich hab versucht das Makro soweit anzupassen, aber es klappt nicht.
 ThisWorkbook.Sheets("KapaPlanung").Rows(t).Insert shift:=xlDown
Bin wirklich dankbar für eure Hilfe.
Gruß
Ron

Kraut und Rüben
04.08.2015 16:23:00
Frank
Hallo Ron,
die Frage ist, was da nicht klappt.
Sheets(1).Rows(10).Insert shift:=xlDown
fügt bei Zeile 10 eine neue Zeile ein.
Sheets(1).Cells(10, 4).Insert shift:=xlDown
fügt bei D10 eine neue Zelle ein und verschiebt den Rest nach unten.
So lange Du nur in dieser einen Mappe arbeitest, kannst Du Dir ThisWorkbook sparen.
Es gibt nun eine Spalte in die möglicherweise mehr als nur eine Zelle eingefügt werden muss. Zum einen soll sie die Daten aus Zelle F9 kopieren werden, und die Zellen F12 und F15 überprüft werden. Falls diese Daten enthalten soll für jede gefüllte Zelle eine neue Zeile erstellt werden und der Wert unter dem bereits kopierten Wert eingefügt werden.
Der erste Satz sagt nicht klar aus, ob eine Zeile oder eine Zelle eingefügt werden muss.
Im zweiten Satz sagst Du zwar, woher die Daten kommen, aber nicht, wo sie hin sollen.
Im dritten Satz ist nicht klar von welchem Wert Du sprichst, der unter einem anderen nicht spezifizierten Wert eingefügt werden soll.
Es können also pro Blatt maximal 2 Zeilen dazukommen? Eine, wenn F12 gefüllt ist, und eine, wenn F15 gefüllt ist? Und in beide soll der Wert aus F9 kopiert werden? Oder in die erste der von F9,in die 2. der von F10?
Grüsse,
Frank

Anzeige
AW: Kraut und Rüben
04.08.2015 17:32:28
ronforum
Hi Frank,
ok dann versuch ich es nochmal.
eine Arbeitsmappe - beliebig viele Tabellenblätter - Tabellenblätter alle gleich aufgebaut (bis auf das erste) - Tabellenblatt 1 ist eine Gesamtaufstellung aller Tabellenblätter
F9: der Wert wird aus jedem Tabellenblatt in Tabellenblatt 1 kopiert (start bei K9 dann untereinander)
F12: ab Tabellenblatt2 überprüfen ob Zelle gefüllt. Wenn Zelle gefüllt, dann wird im Tabellenblatt 1 unter der Zeile vom zugehörigen F9 eine neue Zeile eingefügt und dann entsprechender Wert aus F12 unter F9 kopiert.
F15: gleich wie bei F12 (nur mit F15)
Schritt für Schritt sollen die einzelnen Tabellenblätter durchgegangen werden. Wenn was passieren soll im Sinne von Zeile einfügen dann immer nur auf dem ersten Blatt.
Im Moment rechnet sich das Makro zu Tode.
Aktueller Stand:
Sub KapaPlanungAktualisieren()
Dim t As Long
Dim p As Long
Dim i As Long
lngSheets = ThisWorkbook.sheets.Count
For i = 3 To lngSheets
ThisWorkbook.sheets("KapaPlanung").Cells(6 + i, 11) = ThisWorkbook.sheets(i).Cells(9, 6)     _
lngSheets = ThisWorkbook.sheets.Count
For t = 9 To 1 Step -1
For p = 1 To lngSheets
If ThisWorkbook.sheets(p).Cells(12, 6).Value  "" Then
sheets("KapaPlanung").Rows(t).Insert shift:=xlDown
ThisWorkbook.sheets(p).Cells(12, 6).Value = Cells(t + 1, 11).Value
t = t + 2
If ThisWorkbook.sheets(p).Cells(15, 6).Value  "" Then
sheets("KapaPlanung").Rows(t).Insert shift:=xlDown
ThisWorkbook.sheets(p).Cells(12, 6).Value = Cells(t + 1, 11).Value
t = t + 3
Else
t = t + 1
End If
Next p
Next t
Next i
End Sub
Ich finde leider den Fehler nicht. Wahrscheinlich wieder variablen nicht genau definiert -.-
Ein Ansatz? :)
Beste Grüße
Ron

Anzeige
Aufräumarbeiten
05.08.2015 15:31:22
Frank
Hallo Ron,
ThisWorkbook.sheets("KapaPlanung").Cells(6 + i, 11) = ThisWorkbook.sheets(i).Cells(9, 6) _
lngSheets = ThisWorkbook.sheets.Count
For t = 9 To 1 Step -1
For p = 1 To lngSheets

Das fett markierte kann raus, wenn sich die Anzahl der Blätter zwischenzeitlich nicht geändert hat.
F12: ab Tabellenblatt2 überprüfen ob Zelle gefüllt. Du prüfst ab Tabellenblatt 1:
If ThisWorkbook.sheets(p).Cells(12, 6).Value "" Then bei For p = 1 To lngSheets
Ausserdem sollte Dir obiger Code beim Kompilieren eine Fehlermeldung an den Kopf werfen: «Fehler beim Kompilieren: If-Block ohne End If»
Tipp: Beispielmappen helfen nicht nur den Helfern.
Grüsse,
Frank
Anzeige

245 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige