361 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo und Guten Tag,
bei einen Makro rauche ich Hilfe, kenne mich bisher damit nicht so gut aus.

Folgendes Problem:
Es gibt 2 Tabellenblätter, "Erfassung" und "Auswertung".
Im TB "Erfassung" stehen in mehreren Zeilen verschiedene Daten, die an bestimmte Stellen im zweiten TB "Auswertung" kopiert werden.
Im ersten Teil das Makros werden die Daten direkt von einem zum anderen TB übernommen. Dann werden neue Tabellenblätter mit einem neuen Namen (aus den Zellen der Spalte "D" des TB "Erfassung") erstellt.
Danach werden wiederum aus den TB "Erfassung" Daten übernommen, diesmal in die neu erstellten Tabellenblätter. Dabei werden nur Daten übernommen, wenn in den Quellzellen der Wert größer als 1 ist. Dementsprechen werden auch die Überschriften "dynamisch" übernommen.
Das klappt auch mit Hilfe eines netten Forumsmitgliedes alles sehr gut, die Werte werden übernommen, so wie es sein soll. Nun sollen aber neben den Werten auch die (benutzerdefinierten) Formate der Quellzellen übernommen werden.

Der Teil des Codes dafür ist:

'------------------------------------------------------------
'Nun neuer Durchlauf, um die Spalten AE bis AK jeweils in die betreffenden Tabellenblätter zu kopieren.
For lngCount = 4 To lngRow 'Was bwirkt dieser Eintrag?
strTab = .Cells(lngCount, 4).Text 'Name des Arbeitsblatt, in das die Daten geschrieben werden sollen = SPALTENNUMMER (4=D) in Erfassung
lngEinf = 10 'Zeilen, ab der die Daten eingefügt werden sollen = 10
For lngSpalte = 31 To 37 'Spalten AE=31 bis AK=37
If .Cells(lngCount, lngSpalte).Value > 1 Then
Worksheets(strTab).Cells(lngEinf, 6) = .Cells(1, lngSpalte).Value 'Überschrift von Zeile 1 in Spalte F = 6 kopieren
Worksheets(strTab).Cells(lngEinf, 8) = .Cells(lngCount, lngSpalte).Value 'Wert ab Zeile lngCount in Spalte H = 8 kopieren
lngEinf = lngEinf + 1 'Zähler für Einfügezeile erhöhen
End If
Next lngSpalte
Next lngCount
'------------------------------------------------------------
'Nun neuer Durchlauf, um die Spalten AE bis AK jeweils in die betreffenden Tabellenblätter zu kopieren.
For lngCount = 4 To lngRow 'Was bwirkt dieser Eintrag?
strTab = .Cells(lngCount, 4).Text
lngEinf = 32
For lngSpalte = 40 To 53
If .Cells(lngCount, lngSpalte).Value > 1 Then
Worksheets(strTab).Cells(lngEinf, 2) = .Cells(1, lngSpalte).Value
Worksheets(strTab).Cells(lngEinf, 6) = .Cells(2, lngSpalte).Value
Worksheets(strTab).Cells(lngEinf, 8) = .Cells(lngCount, lngSpalte).Value
lngEinf = lngEinf + 1
End If
Next lngSpalte
Next lngCount
Worksheets(3).Select
End With
'------------------------------------------------------------

Link zur Musterdatei: https://www.file-upload.net/download-12298082/Musterdatei.xls.html

Was muss da noch eingefügt oder geändert werde, um die Werte und Formate zu kopieren?

Vielen Dank für die Hilfe hier.

5 Antworten

0 Punkte
0 Punkte
Beantwortet von
Hallo Febedie .-)

Nach dem Muster!

Gruss Nighty

Zwei Abschnitte z.b.!

Worksheets(strTab).Cells(lngEinf, 6).Copy .Cells(1, lngSpalte).Value 'Überschrift von Zeile 1 in Spalte F = 6 kopieren
Worksheets(strTab).Cells(lngEinf, 8).Copy .Cells(lngCount, lngSpalte).Value 'Wert ab Zeile lngCount in Spalte H = 8 kopieren


Worksheets(strTab).Cells(lngEinf, 2).Copy .Cells(1, lngSpalte).Value
Worksheets(strTab).Cells(lngEinf, 6).Copy .Cells(2, lngSpalte).Value
Worksheets(strTab).Cells(lngEinf, 8).Copy .Cells(lngCount, lngSpalte).Value
0 Punkte
Beantwortet von
Hallo Nighty,
danke für die Antwort.

Leider klappt das nicht, Wenn ich deine Zeilen nehme, kopiert das Makro keine Einträge mehr in die entsprechenden Zellen.
0 Punkte
Beantwortet von
Hallo Febedie ^^

So sollte es gehen,war nur verdreht gewesen!

.Cells(1, lngSpalte).Copy Worksheets(strTab).Cells(lngEinf, 6)
.Cells(lngCount, lngSpalte).Copy Worksheets(strTab).Cells(lngEinf, 8)



.Cells(1, lngSpalte).Copy Worksheets(strTab).Cells(lngEinf, 2)
.Cells(2, lngSpalte).Copy Worksheets(strTab).Cells(lngEinf, 6)
.Cells(lngCount, lngSpalte).Copy Worksheets(strTab).Cells(lngEinf, 8)


Gruss Nighty
0 Punkte
Beantwortet von
Hallo Nighty,
danke nochmal für die Antwort.

Im Moment komme ich nicht dazu, das zu testen. Melde mich nochmal, wenn es wider erwarten nicht klappen sollte.

Danke.
...