2017-10-26 1 views
-1

Ich bin relativ neu im Allgemeinen Codierung, aber hier geht:Excel: Tabelle nicht Ändern der Größe, wenn VBA

Ich habe eine riesige Liste von membershipdata, die ich zu organisieren versuchen. Dies wird wöchentlich erfolgen, da die Daten variabel sind. Daher versuche ich, die Arbeit ein wenig zu automatisieren.

Ich habe geschrieben (mit Hilfe) einen Code, der eine ganze Reihe von Daten kopiert, wenn eine bestimmte Zelle einen bestimmten Text enthält, und fügt es in einem anderen Blatt unter einer vorhandenen Tabelle ein.

Wenn Sie dies jedoch mit einem Makro tun, ändert die Tabelle nicht entsprechend, wie es bei Verwendung von Strg + C und Strg + v tun würde. I.e. Wenn es in dieser Woche mehr Daten gibt als zuletzt, ist die Tabelle nicht groß genug, und daher sortieren die Sortieroptionen in der Tabelle nicht alle Daten.

ich in der Lage, die Tabelle mit diesem Code, um die Größe:

Sub sortOK() 

Dim sht As Worksheet 
Dim LastRow As Long 
Dim LastColumn As Long 
Dim StartCell As Range 

Set sht = Worksheets("OK") 
Set StartCell = Range("A1") 

    Worksheets("OK").UsedRange 

    LastRow = StartCell.SpecialCells(xlCellTypeLastCell).Row 
    LastColumn = StartCell.SpecialCells(xlCellTypeLastCell).Column 

    sht.Range(StartCell, sht.Cells(LastRow, LastColumn)).Select 

    sht.ListObjects("OK").Resize Range(StartCell, sht.Cells(LastRow, LastColumn)) 

End Sub 

Dies funktioniert gut, aber es funktioniert nur, wenn ich dieses spezielle Blatt bin sehen, ich es von einem anderen Blatt arbeiten kann nicht. Wie kann ich das tun?

Ich möchte auch die gleiche Operation in einem Schritt auf vier anderen Listen, jeweils in einer eigenen Tabelle.

Ich habe dieses Problem fast den ganzen Tag festgefahren, und mein Kopf wird explodieren!

Vielen Dank im Voraus.

+0

* Ich habe (mit Hilfe) einen Code geschrieben, der eine ganze Reihe von Daten kopiert, wenn eine bestimmte Zelle einen bestimmten Text enthält, und sie in ein anderes Blatt unter einer vorhandenen Tabelle einfügt * Das ist nicht der Code, den Sie uns gezeigt haben. Zeig uns diesen Code. –

+0

Lesen Sie [this] (https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba), um Ihre Bereichsobjekte vollständig zu qualifizieren. Verwenden Sie nicht 'Select' oder' Activate'. Qualifizieren Sie Ihre Bereiche richtig und Sie können unabhängig davon, welches Blatt zur Laufzeit aktiv ist, ein Makro ausführen. –

+0

Haben Sie immer Option explizit an der Spitze Ihres Codes für Starter. Verweisen Sie vollständig auf Ihre Bereichsobjekte einschließlich der von Ihnen verwendeten Arbeitsmappe. Außerdem bin ich überrascht, dass Sie keinen Kompilierungsfehler mit Arbeitsblättern bekommen ("OK"). UsedRange, da Sie dies nicht auf eine Variable setzen. – QHarr

Antwort

0

Versuchen wie folgt aus:

Set StartCell = sht.Range("A1") 

Es sollte funktionieren. Auf diese Weise verweisen Sie das Arbeitsblatt auch auf den Bereich. Wenn Sie es nicht tun, dauert es .

+0

Vielen Dank für Ihre Antwort, aber es hat nicht funktioniert, aber mein Fehler hat sich geändert: "Methode" Bereich "des Objekts" _Worksheet "fehlgeschlagen" "zu" Select-Methode in Range-Klasse fehlgeschlagen ". Beide mit einem "Laufzeitfehler" 1004 ". –

+0

@ ErikLøkås - schreibe 'sht.Select' in die Zeile vor dem Fehler. – Vityata

+1

Danke, das hat funktioniert! –

Verwandte Themen