PDA

Vollständige Version anzeigen : Zellen kopieren


ACEofSPADES
22.02.2008, 09:24
Ich benötige für eine Übersicht Daten aus Textdateien. Die öffne ich in einem neuen Worksheet, jetzt muss ich die dritte Zeile kopieren und in das erste Worksheet kopiert bekommen.
Das Problem was ich habe, ist dass die Textdateien manchmal eine Leerzeile haben und dann die Tabelle neu beginnt. Aber ich brauche alle Inhalte in der dritten Tabellenspalte, die die Bauteilnamen beinhaltet. Auch ist die Anzahl der Inhalte unterschiedlich.
Wie kann ich nun per Makro die Zellen in der Spalte kopieren, die Inhalte (außer der Tabellenüberschrift) haben und dann ohne Leerspalten im anderen Worksheet einfügen?

jinx
24.02.2008, 09:46
<font size="2" face="Century Gothic">Moin, ACEofSPADES,

Leerzeilen kann man durch die Verwendung von SpecialCells(xlCellTypeConstants, 23) mit einer vorangestellen On Error Resume Next-Fehlerübergehung "ausblenden" und den so erhaltenen durchgängigen Bereich kopieren:

On Error Resume Next
Range("A1:C" & Cells(Rows.Count, "C").End(xlUp).Row).SpecialCells(xlCellTypeConstants, 23).Copy
If Err = 0 Then
With Worksheets("Tabellexy")
.Activate
.Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).Select
End With
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Ohne Select sollte der gem. SpecialCells erhaltene Bereich in einer Schleife durchlaufen werden...</font>

losgehts
25.02.2008, 01:11
Hi Jinx, Hi ACEofSPADES!

@Jinx: Dein Code klappt bei mir nicht, oder habe ich nur "falsche Daten" zum Testen genommen? Durch das "On Error Resume Next" wird der range(...)specialcells(...).copy-Befehl nicht ausgeführt. Und Err nimmt den Wert 1004 an. Kommentiere ich die If-Bedingung aus, wird nicht der Bereich kopiert (da ja der copy-Befehl nicht ausgeführt wurde), sondern das, was sich gerade in der Zwischenablage befindet.
Ich nehme an, dass du die on error resume next Zeile benutzen willst, um "Excel zu überreden" den nicht zusammenhängenden Bereich zu kopieren, falls das geht, würde mich interessieren, was dabei herauskommt und wie das geht; ich würde mich freuen, wenn du mir erklärst was dein Code genau macht/machen soll.

@ACEofSPADES:
Ich verstehe dich nicht ganz: kann es sein, dass du Zeilen und Spalten verwechselt hast?
Meinst Du, dass du ausschließlich aus der Spalte 3 kopieren willst und davon wiederum nur die Zellen, die einen Wert haben (Ausnahme Zeile1)?
Das würde ich dann folgendermaßen machen:Sub Spalte_C()
Range("C2:C" & Cells(Rows.Count, 3).End(xlUp).Row).SpecialCells(xlCellTypeConstants, 23).Copy
Tabelle2.Range("A1").PasteSpecial
Application.CutCopyMode = False
End Sub


Über Rückmeldungen freue ich mich immer!
Grüße, Ulrich

ACEofSPADES
25.02.2008, 09:37
Also bei mir klappt der Code, losgehts... ich musste einige Änderungen in den Zielen machen, aber nun kopiert er alles was ich brauche und fügt die auch richtig ein. Leider kopiert er auch die Tabellenüberschriften mit, da muss ich sehen wie ich die übersprungen bekomme.

@losgehts: sorry, habe mich wirklich schlecht ausgedrückt. Ich suche eine Möglichkeit eine Zeile zu kopieren und die leeren Zellen zu übergehen.

losgehts
25.02.2008, 14:43
Hi ihr beiden!

Ich fange an, zu verstehen:
Diesen Bereich kann ich mit Jinx-Methode kopieren:
<table border="1" cellspacing="0" cellpadding="0" style="font-family:Arial,Arial; font-size:10pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:80px;" /><col style="width:80px;" /><col style="width:80px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td><td >C</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td >a</td><td >s</td><td >j</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td >b</td><td >e</td><td >d</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td >c</td><td >e</td><td >d</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td >d</td><td >jk</td><td >d</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >6</td><td >m</td><td >g</td><td >j</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >7</td><td >e</td><td >f</td><td >d</td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4 </a>

jedoch sobald eine Zelle keinen Inhalt hat, wird nichts kopiert:
<table border="1" cellspacing="0" cellpadding="0" style="font-family:Arial,Arial; font-size:10pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:80px;" /><col style="width:80px;" /><col style="width:80px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td><td >C</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td >a</td><td >s</td><td >j</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td >b</td><td >e</td><td >d</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td >c</td><td >e</td><td >d</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td >d</td><td >&nbsp;</td><td >d</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >6</td><td >m</td><td >g</td><td >j</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >7</td><td >e</td><td >f</td><td >d</td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4 </a>

Das hatte ich bei seinem Code nicht verstanden.

Grüße, Ulrich

jinx
25.02.2008, 18:18
<font size="2" face="Century Gothic">Moin, Ulrich,

die SpecialCells-Methode trifft quasi eine Vorauswahl der Zellen, die bearbeitet werden sollen (ob dies nun z.B. Formel-, Leer- oder Textzellen sind) - sie schränken die Menge der zu bearbeitenden Zellen ein und entsprechen dem Vorgehen nach F5/Inhalte/Texte/OK.

Die On Error-Anweisung soll nur dafür sorgen. dass keine Fehlermeldung kommt, wenn die gesuchten Zellen sich nicht auf der Tabelle befinden - nichts ist meiner Meinung nach unpassender als eine nicht abgefangene Fehlermeldung, die den Benutzer in die VBE "verschlägt"...</font>

losgehts
25.02.2008, 22:06
Hi Jinx!

Danke!
Ich verstehe jetzt, was du gemeint hast, ich hatte ACEofSPADES einfach anders verstanden.

Dass man die SpecialCells über F5/Inhalte/Texte/OK auch "per Hand" verwenden kann, war mir absolut unbekannt. Das ist ja super! Da eröffnen sich ja völlig neue Möglichkeiten.

Vielen Dank!
Grüße, Ulrich