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

Bestimmte Spalten aus Zeile in neues Arbeitsblatt

Bestimmte Spalten aus Zeile in neues Arbeitsblatt
05.09.2018 09:16:02
Matthias
Hallo Community,
ich hänge derzeit fest und benötige ein wenig Unterstützung.
Ich habe ein Macro geschreiben, welches nach einem bestimmten Wert in einer vorgegebenen Spalte sucht.
Aktuell wird dann die ganze Zeile, sowie die Vorgängerzeile in ein neues Tabellenblatt kopiert.
Im Namensmanager wurden Spaltenbereiche definiert.
Kann ich auf den Namensmanager zugreigen um Spaltenbereich auszulesen, um Sie dann in den Kopiervorgang zu integrieren? Wichtig dabei ist auch, dass die Werte dann direkt nacheinander in das neue Tabellenblatt geschrieben werden. Beispielsweise dass ein Bereich BE:CG, dann einfach in Spalte A bzw. an letzten vorrangegangenen Bereich angefügt wird.
Es wird mehrer Spaltenbereiche geben, die es zu Kopieren gilt. Ebenso ist es denkbar, dass Spaltenbereich variabel hinzugefügt werden können. Je nach dem ob sie sichtbar oder versteckt sind.
Code sieht aktuell wie folgt aus:

Option Explicit
Dim wbName As String
Dim LastRow As String
Dim varSearch As String
Dim colNum  As Integer
Sub CopyRow()
Workbooks(ThisWorkbook.Name).Sheets("DieseMappe").Activate
varSearch = frmReport.varSearch
colNum = frmReport.colNum
wbName = mdlMakeWorkbook.wbName
Dim x As Integer
Dim y As Integer
Dim z As Integer
y = 2
LastRow =
IIf(IsEmpty(ThisWorkbook.Sheets("DieseMappe").Cells(Rows.Count,colNum)), _
ThisWorkbook.Sheets("DieseMappe").Cells(Rows.Count, colNum).End(xlUp).Row, _
ThisWorkbook.Sheets("DieseMappe").Rows.Count)
For x = 5 To LastRow
If Cells(x, colNum) = varSearch Then
z = x - 1
ThisWorkbook.Sheets("DieseMappe").Rows(x).Copy_ Destination:=ThisWorkbook.Sheets(" _
Report").Rows(y)
y = y + 1
ThisWorkbook.Sheets("DieseMappe").Rows(z).Copy_
Destination:=ThisWorkbook.Sheets("Report").Rows(y)
y = y + 1
End If
Next x
End Sub
Vielleicht geht es auch einfacher zu gestalten oder einen anderen Weg die Zeilen zu kopieren.
Für Hilfe wäre ich wirklich sehr dankbar.
Bei Fragen fragen.
Danke und Gruß
M. Huck

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

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Spalten aus Zeile in neues Arbeitsblatt
05.09.2018 10:20:49
Matthias
Hallo Jörn,
Danke für deine Antwort.
ich verstehe nicht ganz was du machen möchtest
Es wird eine Spalte(colNum) in "DieseMappe" nach "varSearch" durchsucht. Ist diese Bedingung erfüllt, soll diese Zeile und die Vorgängerzeile in ein neues Tabellenblatt kopiert werden.
Das läuft soweit.
Jetzt soll aber nicht die ganze Zeile, sondern nur ein bestimmter Bereich kopiert werden. Und zwar nur der Bereich in welchem die Spalten im Quellblatt Sichtbar sind.
Durch ToggleButtons lasse ich bestimmte Spaltenbereich, welche im Namensmanager definiert sind durch Selection.EntireColumn.Hidden ein und ausblenden.
Nur die Eingeblendeten Spalten sollen dann kopiert werden.
Ich hoffe, ich konnte mich verständlicher ausdrücken.
Gruß
Anzeige
AW: Bestimmte Spalten aus Zeile in neues Arbeitsblatt
05.09.2018 10:29:43
Jörn
Ahhh, neue Informationen ;-)
Ich habe gerade keine Zeit es auszuprobieren, aber vielleicht kannst du mit .SpecialCells(xlCellTypeVisible).Copy und Intersect was erreichen.
Grüße
AW: Bestimmte Spalten aus Zeile in neues Arbeitsblatt
05.09.2018 11:01:30
Matthias
Hallo Jörn.
vielen Danke für deine Antwort.
Durch die Erweiterung deines Codes nach ".Rows(X)." hat es funktioniert.
Danke und Gruß
Unklare Problembeschreibung...
05.09.2018 10:28:09
EtoPHG
Hallo Matthias (nicht zufällig Matthias_1203 ? ),
Zitat: ...ein Macro geschreiben, welches nach einem bestimmten Wert in einer vorgegebenen Spalte sucht.Leider sehen wir den Code dieses Makros nicht! Wäre u.U. hilfreich.
Zitat: Kann ich auf den Namensmanager zugreigen um Spaltenbereich auszulesen, um Sie dann in den Kopiervorgang zu integrieren? Bereich werden mit VBA als Range-Objektangesprochen. Das kann selbstredend ein definierter Name sein und damit als Range("Name") referenziert werden. Das sollte bei VBA gut bekannt sein.
Zitat:Beispielsweise dass ein Bereich BE:CG, dann einfach in Spalte A bzw. an letzten vorrangegangenen Bereich angefügt wird. Das Ziel wird mit dem benannten Parameter Destination:= angesprochen. Was allerdings ein vorrangegangener Bereich sein soll ist völlig schleierhaft!
Zitat: Ebenso ist es denkbar, dass Spaltenbereich variabel hinzugefügt werden können. Je nach dem ob sie sichtbar oder versteckt sind. Und was soll das bedeuten, bzw. was für einen Impact auf deinen Code erwartest du damit?
Gruess Hansueli
Anzeige
AW: Unklare Problembeschreibung...
05.09.2018 10:45:02
Matthias
Hallo Hansueli,
danke für deine Antwort.
Nein der Matthias bin ich nicht. Habe mich heute neu angemeldet ;)
Um deine Fragen zu beatnworten
Leider sehen wir den Code dieses Makros nicht! Wäre u.U. hilfreich.
Damit meine ich den Code der abgebildet ist.
Was allerdings ein vorrangegangener Bereich sein soll ist völlig schleierhaft!

Damit meine ich, dass die definierten Spalte(z.B. BR bis CG) dann auf dem Zielblatt nicht an die gleiche Stelle eingefügt werden, sondern der Inhalt dann an die zuletzt befüllte Spalte im Zielblatt kopiert wird und nicht 1 zu 1 dann in den Bereich BR bis CG. Dann habe ich das Problem, viele leere Spalten dazwischen zu haben und muss sehr weit scrollen.
Ebenso ist es denkbar, dass Spaltenbereich variabel hinzugefügt werden können. Je nach dem ob sie sichtbar oder versteckt sind. 
Mittels ToggleButtons und dem Code

Selection.EntireColumn.Hidden
lasse ich Spaltenbereiche, welche ich im Namensmanager definiert habe, verwschinden und erscheinen.
Mein Absicht war es, dass nur die Inhalte aus den sichtbaren Spalten kopiert werden.
Ich hoffe ich konnte es ein wenig verständlicher vermitteln.
Danke für deine Hilfe
Gruß
Anzeige
AW: Unklare Problembeschreibung...
05.09.2018 11:02:20
EtoPHG
Hallo Matthias,
Nun, den ersten Ansatz für sichtbare Zellen hat dir Jörn gegeben.
ThisWorkbook.Sheets("DieseMappe").Rows(x).SpecialCells(xlCellTypeVisible).Copy Desti....
Das zweite Problem, die freie Spalte einer Zeile zu bestimmen, kannst du ähnlich lösen, wie das Bestimmen der nächsten freien Zeile einer Spalte. Anstelle von Row, Rows, xlup treten dann Column, Columns, xlToLeft
Gruess Hansueli
AW: Unklare Problembeschreibung...
05.09.2018 12:23:50
Matthias
Hallo Hansueli,
vielen Dank für deine Antwort.
Durch ".SpecialCells(xlCellTypeVisible)" und meinem "Copy-Code" funktioniert das Auffüllen der Spalten im neuen Sheet automatisch.
Es funktioniert alles. Danke für die Unterstützung.
Gruß
Anzeige

157 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige