Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
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

Nichtleere Zei. einer format. Tab kop.

Nichtleere Zei. einer format. Tab kop.
26.09.2020 17:11:23
Thomas
Hallo
habe eine formatierte Tabelle, die einige gefüllte und einige Leerzeilen enthält. Die gefüllten Zeilen sollen in einer anderen formatierten Tabelle daneben angehängt werden.
Hier eine Musterdatei mit Makro. https://www.herber.de/bbs/user/140457.xlsm
Und hier auch nochmal das Makro zum Lesen.
Sub Kopieren()
Dim a
With Worksheets("Tabelle1")
With .ListObjects("q_1")
.DataBodyRange.Select
.Range.AutoFilter Field:=1, Criteria1:=""
a = .DataBodyRange.SpecialCells(xlCellTypeVisible)
Debug.Print LBound(a, 1), UBound(a, 1)  'Liefert 1 1
End With
End With
End Sub

Ich stehe an. Warum hat das Array a nur 1 Zeile?
Wie kann man die Aufgabe mit Zuweisen eines Arrays lösen, und wie mit range.copy? Beide Varianten sind für mich interessant.
Gruß, Thomas

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nichtleere Zei. einer format. Tab kop.
26.09.2020 17:34:00
Daniel
Hi
Arrays können keine Lücken haben.
Wenn du einen Zellbereich der aus mehreren Blöcken besteht einem Array übergibst, wird nur der erste Block ins Array übernommen.
Das Kopieren so eines Zellbereich funktioniert normal.
Gruß Daniel
AW: Nichtleere Zei. einer format. Tab kop.
26.09.2020 18:03:06
Thomas
Hi, Daniel, danke für die schnelle Antwort.
"Das Kopieren so eines Zellbereich funktioniert normal."
Und wie? Bitte um konkrete Codezeile
Ich probiere verzweifelt herum mit ListRows.add usw.
Gruß, Thomas
AW: Nichtleere Zei. einer format. Tab kop.
26.09.2020 18:17:41
Daniel

.DataBodyRange.SpecialCells(xlCellTypeVisible).Copy

Thats all.
Vielleicht reicht auch schon
.DataBodyRange.Copy
Weil Excel beim Kopieren und sonstigen Bearbeitungen per Autofilter ausgeblendet Zeilen automatisch ignoriert.
Gruß Daniel
Anzeige
AW: Nichtleere Zei. einer format. Tab kop.
26.09.2020 19:04:36
Thomas
Habe mich jetzt auf das Einfügen unter die andere Tabelle bezogen.
Habe nun den Code etwas geändert, als Vorstufe. Da geht einiges nicht, würde aber gere wissen, warum.
Hier der Code:
Sub Kopieren()
Dim Bereich As Range
With Worksheets("Tabelle1")
With .ListObjects("q_1")
.Range.AutoFilter Field:=1, Criteria1:=""   'Filter setzen
.DataBodyRange.Copy Range("G1")         'Range.Copy: Geht
Set Bereich = .DataBodyRange.SpecialCells(xlCellTypeVisible)
Range("K1:M3").Value = Bereich.Value    'Ergibt 3 Mal erste Zeile
Set Bereich = .DataBodyRange
Range("H4:J6").Value = Bereich.Value    'Ergibt 1 Mal erste Zeile
End With
End With
End Sub
Warum geht das Kopieren eines Ranges nicht? Ich glaube, das werde ich brauchen, wenn ich den Range an die andere Tabelle anhängen will.
Gruss, Thomas
Anzeige
AW: Nichtleere Zei. einer format. Tab kop.
26.09.2020 19:45:28
Daniel
Hi
.Value = .Value wird intern über Arrays ausgeführt.
Das funktioniert daher auch nur dann richtig, wenn du auf beiden Seiten des "=" gleich große rechteckige Zellbereich ohne Lücken hast oder wenn der rechte Teil ein Einzelwert ist.
Gruß Daniel
AW: Nichtleere Zei. einer format. Tab kop.
26.09.2020 22:18:30
Thomas
Aber die sind ja gleich groß. Und funktionieren trotzdem nich.
AW: Nichtleere Zei. einer format. Tab kop.
26.09.2020 23:13:53
Daniel
müsste ich mal ausprobieren.
dazu brauche ich deine Datei.
das BEREICH in beiden Fällen nicht das gleiche ist sondern immer ein anderer Zellbereich, ist dir bewusst?
AW: Nichtleere Zei. einer format. Tab kop.
26.09.2020 23:56:51
Thomas
Hi Daniel,
Du schreibst: "müsste ich mal ausprobieren."
ja bitte, gerne.
Du schreibst: "dazu brauche ich deine Datei." Greif nur zu. Meine Datei habe ich in meinem Eröffnungsbeitrag hochgeladen. Hast Du etwa bis jetzt geantwortet, ohne da hineinzusehen?
Du schreibst: "das BEREICH in beiden Fällen nicht das gleiche ist sondern immer ein anderer Zellbereich, ist dir bewusst?"
Ja, ist mir bewusst. Doch in keinem von beiden werden die drei sichtbaren Zeilen gespeichert. Denn die will ich kopieren, idealerweise an die Tabelle rechts angehängt. Das ist ja auch meine Eingangsfrage.
Gruss, Thomas
Anzeige
AW: Nichtleere Zei. einer format. Tab kop.
27.09.2020 00:24:19
Daniel
in der alten datei sind aber nicht deine neuen codes zu deinen neuen Fragen drin.
muss ich jetzt durch die Beiträge scrollen und und die codes zusammen suchen?
mach ich gerne, wenn ich dir den Aufwand in Rechnung stellen darf.
AW: Nichtleere Zei. einer format. Tab kop.
27.09.2020 00:40:55
Daniel
als dann nochmal ausführlich für dich:
fall 1: Set Bereich = .DataBodyRange.SpecialCells(xlCellTypeVisible)
hier ist Bereich =
AW: Nichtleere Zei. einer format. Tab kop.
27.09.2020 00:54:44
Daniel
also dann nochmal ausführlich für dich:
fall 1: Set Bereich = .DataBodyRange.SpecialCells(xlCellTypeVisible)
hier ist Bereich = $C$6:$E$6,$C$9:$E$9,$C$12:$E$12
ins interne Array für das .value = .Value geht nur der erste Block und damit c6:e6
dh der quellbereich umfasst nur eine Zeile
da der Zielbereich aber 3 Zeilen hat und der quellberereich nur eine, wird der quellbereich 3x wiederholt.
fall 2: Set Bereich = .DataBodyRange
hier ist Bereich = $C$6:$E$12
die filterung spielt hier keine rolle.
da bereich hier nur aus einem Block besteht, geht auch der vollständige Bereich mir allen Zellen und allen 7 Zeilen ins interne Array für das .Value = .Value
hier ist es nun so, dass der Zielbereich kleiner ist als der quellbereich (3 Zeilen zu 7 Zeilen).
derher werden auch nur die ersten 3 Zeilen des quellbereichs übernommen.
von den ersten 3 Zeilen enthält nur die zeile 6 daten, die Zeile 7 und 8 sind leer.
verstanden?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige