Die Skriptsprache für Microsoft Excel , Visual Basic, erweitern Sie Excel bereits reichlichen Satz von Werkzeugen . Allerdings kann Codierung direkt in Visual Basic schwierig sein, weil einige Funktionen (wie Sortierung) Einstellung erfordern mehrere Parameter in einer exakten fashion.You vermeiden können Hand-Codierung insgesamt , indem die Makroaufzeichnung schreiben den Code für Sie , aber das ist nicht immer net das Ergebnis Sie suchen. Die Lösung besteht darin, das Beste aus beiden Welten zu kombinieren : Makros verwenden, um die Bulk- Codierung und ein wenig Hand-Codierung , um den Job zu beenden tun . Sortieren einem kleinen Tisch
Verwenden Sie Visual Basic , um eine kleine Tabelle zu sortieren . Beginnen Sie , indem Sie in der folgenden Tabelle in Zellen G8 H11 in Blatt 1:
Kundenname , Konto balanceZephyr Windmaschinen , 5Arondale Schreibtische, - 10Bubble Gumballs , 30
Nach Eingabe der Daten , wählen Sie es und starten Sie die Aufzeichnung des Makros (Developer > Makro aufzeichnen ) . Benennen Sie das Makro MySort . Sort ( Daten> Sortieren A bis Z) die ausgewählten Daten in der ersten Spalte , und stoppen Sie die Aufzeichnung des Makros .
Replay das Makro
Versuchen Sie das Makro zu greifen einen anderen Bereich : Kopie und fügen Sie den Customer-Tabelle in einen anderen Bereich des Arbeitsblatts , und wählen Sie den neuen Bereich . Spielen Sie das Makro (Developer > Makros > MySort ) , und beachten Sie die Wirkung : die Daten wurden nicht sortiert. Achten Sie auf das Problem in der Visual Basic-Code von Ihrem Makroaufzeichnung erstellt . Beginnen Sie , indem Sie auf den Code : . Drücken Sie Alt -F8 , wählen Sie Ihre MySort Makro, und klicken Sie auf die Schaltfläche Bearbeiten
Innerhalb der MySort Funktion , bemerken diese Aussage:
ActiveWorkbook.Worksheets ( " Tabelle1 "). Sort.SortFields.Add Key : = Range (" G8 " ) ...
Und eine Erklärung ein paar Zeilen nach : .
SetRange Range (" C9 : D12 " )
Beide Aussagen sind die Quelle des Problems , sie sind die Gründe, warum MySort ausfällt , um den ausgewählten Bereich sortieren : die Visual Basic-Makro -Recorder hart codiert die Daten Bereich (" C9 : D12 " und " G8 " ) zu sortieren . Ihre Aufgabe ist es, die einprogrammierte Bereiche ersetzen , um das Makro Art die aktuelle Auswahl
Verwenden Sie die Selection-Eigenschaft
Insbesondere den Parameter Key : . = Reichweite ( " G8 " ) erzählt Excel , um den Kunden Tabelle auf der " Kunden "-Spalte, die in Zelle G8 beginnt zu sortieren. Um dieses ursprüngliche "Kunde" Spalte mit dem ineinander aktuell ausgewählten Text zu ersetzen, die Selection-Eigenschaft des Application-Objekts suchen. Diese Eigenschaft bezieht sich auf den Bereich der aktuell ausgewählten Zellen . Ersetzen Key : = Range (" G8 " ) mit diesem: Key : = k . Sie k in einem Moment definieren
Der nächste hartkodierte Bereich zu ersetzen tritt ein paar Aussagen down: . . SetRange Range (" G8 : H11 " ) . Das Verfahren . SetRange zeigt Excel die komplette Palette Sie sortieren möchten . Ersetzen SetRange Range (" G8 : H11 " ) . Dies mit : ". . SetRange r "
r variable , wie die k ( ey ) Variable, die Sie gerade eingegeben haben , werden aus der Selection-Eigenschaft kommen . Zum Start des Makro-Definition und geben diese Zeilen :
Dim r , k As Range
Set r = k = Application.SelectionSet r.Columns ( 1) german
das erste Set Zuordnung definiert den Bereich der Zellen für die SetRange Verfahren benötigt - . die gesamte Auswahl . Die zweite Zuweisung setzt den Bereich für den Sortierschlüssel in die erste Spalte in der Auswahl benötigt. Sie können auf der zweiten Säule , indem Sie die "1" , um eine Art "2".
Testen Sie das Makro Berichtigt
Der Code Korrektur abgeschlossen ist . Testen Sie es , indem Sie zu dem Arbeitsblatt , die Auswahl der Customer-Tabelle - wo immer Sie es platziert auf dem Blatt - und läuft MySort . Kopieren Sie diese Tabelle , um eine neue Reihe von Zellen , markieren Sie die Zellen , und führen MySort auf sie wieder. Beachten Sie die Art funktioniert nun korrekt .