2017-05-31 7 views
0

Ich versuche derzeit, ein Makro zu beenden, das eine Liste aller Personen in 1 Liste zusammenfassen und alle verschiedenen Informationen für Menschen über alle Listen anzeigen wird.Excel VBA Varailable Spaltenauswahl

Ich bin zu dem Punkt gekommen, wo ich alle Listen zusammen habe, und alles, was ich jetzt tun muss, ist die richtigen Daten auszuwählen und zu kompilieren.

Mein aktueller Code:

Sheets("Sheet2").Select 
Columns("E:AI").Select 
Selection.Copy 
Sheets("Sheet1").Select 
Range("E1").Select 
ActiveSheet.Paste 

Ich versuche, die Spalten Zeile zu ersetzen, so dass es eine variable Länge auswählen.

Columns("E").Select 
Range(Selection, Selection.End(x1toRight)).Select 
Range(Selection, Selection.End(x1Down)).Select 
Selection.Copy 

Wenn das Makro mit der ersten zweiten Zeile in meinem aktualisierten Code bekommt, erhalte ich einen Laufzeitfehler ‚1004‘: Anwendung definiert oder Objekt definierte Fehler.

Wenn ich es zeilenweise durchlaufe, scheint es ein Problem mit den Spalten ("E") zu geben, die die gleichen Daten auswählen wie zuvor, als es Spalten ("E: AI") waren.

Jede Hilfe würde sehr geschätzt werden.

+1

'x1toRight' sollte' xLtoRight' sein und 'x1Down' sollte' xLDown' sein. – Jeeped

+0

Warum versuchen Sie 'xlDown' zu verwenden, wenn Sie sowieso mit vollen Spalten beginnen? Zeichnen Sie diese Aktionen auf und untersuchen Sie den von Ihnen erstellten Code. – Jeeped

+0

Sie sollten auch 'Select' vermeiden, siehe [diese Antwort] (https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) für weitere Informationen – Jordan

Antwort

0

Nicht genau, was Sie versuchen zu tun, aber diesen Code bis E1 -> letzte Spalte und letzte Zeile gefüllt.

Sie müssen es an Ihre Bedürfnisse anpassen. Ich nahm an, dass Ihr Tisch quadratisch ist, wenn Sie den Code nicht ändern.

Ich habe die Zeilen in Spalte E gezählt, wenn das nicht das ist, was Sie ändern wollen.
Ich suchte auch nach der letzten Spalte in Zeile 1. Ändern Sie das, wenn das nicht stimmt.

LastCol = ActiveSheet.Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column ' here you need to change '1' to what row to look at 
LastRow = Cells(Rows.Count, "E").End(xlUp).Row ' change "E" to fit your need 
Range("E1:" & Split(Cells(1, LastCol).Address(True, False), "$")(0) & LastRow).Select 
+0

Ich versuche alle Spalten nach E bis zum Ende meiner Daten auszuwählen. Die Listen, von denen ich meine Informationen abrufe, variieren in der Anzahl der Spalten, die ich kopieren muss. Wird das funktionieren? – CZ31

+0

@ user8092309 Nun, wenn Sie mir sagen, wie Ihr Blatt aussieht, kann ich Ihre Frage beantworten. Oder Sie können einfach versuchen und sehen. In jedem Fall. Ich bin sicher, es funktioniert oder ich kann es funktionieren – Andreas

+0

@ user8092309 Sie sagen "alle Spalten". Doch der Code, den Sie uns oben gegeben haben, zeigt an, dass es sich um eine Reihe von Zellen handelt und nicht um Spalten, die Sie auswählen. In der ersten Zeile wählen Sie E Spalte, dann "Strg Rechts Pfeil" menas bis zum Ende auswählen. Fein. Aber dann "ctrl down arrow", siehst du die Verwirrung? Möchten Sie Spalten oder Zellbereiche? – Andreas