tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
2915
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    win98 win98 ist offline Grünschnabel
    Registriert seit
    Feb 2010
    Beiträge
    2
    hallo,

    ich möchte über VB die C spalte in excel aufsteigend sortieren. mit einem VBA makro hab ich das hinbekommen (siehe grüner code) ich möchte aber jetzt an der stelle einen VB code haben.

    wie mach ich das am geschicktesten?

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    Private Sub btnPlanIds_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPlanIds.Click
     
    Dim xliApp = CreateObject("EXCEL.APPLICATION")
    Dim xliWB = xliApp.Workbooks.Open(pfad_i)
     
    'Cells.Select
     
    'Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:= _
    'xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    'DataOption1:=xlSortNormal
     
    xliWB.Close()
    xliWB = Nothing
    xliApp = Nothing
     
    End Sub
    Geändert von win98 (15.02.10 um 16:06 Uhr) Grund: CODE
     

  2. #2
    Avatar von DrSoong
    DrSoong DrSoong ist offline Iss was, Doc!
    tutorials.de Premium-User
    Registriert seit
    Jul 2003
    Ort
    Dem Zentrum meiner Welt
    Beiträge
    1.836
    Blog-Einträge
    85
    Im Prinzip funktioniert das ganze schon so, wie du dir das gedacht hast (Excel-Makro aufzeichnen und das verwenden), dabei gibt es aber noch ein paar Sachen zu beachten.

    In deinem Fal musst du natürlich vor die auskommentierten Anweisungen noch das xliWB setzen, also würde das so aussehen:
    Code vb:
    1
    2
    3
    4
    5
    
    xliWB.Cells.Select
     
    xliWB.Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal

    Es gibt aber noch das Problem, dass diese VBA-Konstanten ala xlAscending, xlGuess usw. in VB nicht deklariert sind, du müsstest die reelen Werte einfügen oder sie ganz streichen (die meisten Werte sind eh die Standardwerte). In deine Fall würde das ganze so aussehen (Konstanten durch die entsprechenden Werte ersetzt):
    Code vb:
    1
    2
    3
    4
    5
    
    xliWB.Columns("C:C").Select
     
    xliWB.Selection.Sort Key1:=Range("C1"), Order1:=1, Header:= _
    0, OrderCustom:=1, MatchCase:=False, Orientation:=1, _
    DataOption1:=0


    Der Doc!
     
    A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
    B: Die Scrollbar da rechts ist dir schon mal aufgefallen?

  3. #3
    win98 win98 ist offline Grünschnabel
    Registriert seit
    Feb 2010
    Beiträge
    2
    vielen dank für die ausführliche antwort.

    wenn ich so deinen code verwende, hab ich einen fehler (blau unterstrichen "nicht deklariert") bei "Range("C1")". geh auch nich weg wenn ich stattdessen Cells(1,3) schreibe.

    deswegen hab ichs so gemacht: (weil die sortierung soll im sheet "pro_node" passieren)

    Code vb:
    1
    2
    3
    4
    5
    
    xliWB.Columns("C:C").Select()
     
    xliWB.Selection.Sort(Key1:=xliWB.Sheets("pro_node").Range("C1"), Order1:=1, Header:= _
            0, OrderCustom:=1, MatchCase:=False, Orientation:=1, _
            DataOption1:=0)

    jetzt ist nix mehr unterstrichen.

    wenn ich es laufen lassen will möchte er gleich in der ersten zeile debuggen. fehler : "typ workbook wurde nicht gefunden"

    deswegen hab ich es so erstetzt:
    Code vb:
    1
    2
    3
    4
    5
    
    xliWB.Sheets("pro_node").Columns("C:C").Select()
     
    xliWB.Selection.Sort(Key1:=xliWB.Sheets("pro_node").Range("C1"), Order1:=1, Header:= _
            0, OrderCustom:=1, MatchCase:=False, Orientation:=1, _
            DataOption1:=0)

    dann geht er weiter und ich bekomm genau den selben fehler in zeile 3 und deswegen hab ich das jetzt so stehn:

    Code vb:
    1
    2
    3
    4
    5
    
    xliWB.Sheets("pro_node").Columns("C:C").Select()
     
    xliWB.Sheets("pro_node").Selection.Sort(Key1:=xliWB.Sheets("pro_node").Range("C1"), Order1:=1, Header:= _
            0, OrderCustom:=1, MatchCase:=False, Orientation:=1, _
            DataOption1:=0)
    jetzt bringt er mit den fehler "typ worksheet wurde nicht gefunden"

    warum? ich hab doch angegeben sheets("pro_node").

    weißt du worans liegen könnte?
     

  4. #4
    Elwert Elwert ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    1
    Hallo,

    ich habe mir eine Liste erstellt und möchte die über mehrere Spalten Sortieren, ab Zeile 5 d.h. erst Spalte E absteigend sortieren und dann Spalte D absteigend etc.! So über benutzerdifiniertes sortiern kann ich, aber ich möchte gerne eine Grafik einfügen, die dann einen Befehl hat das er mir das Sortiert. Ich weiß das man das über Visual Basic machen kann benutze Microsoft Excel 2007

    Ich kann auch jemanden die Datei per E-mail schicken!

    MFG Elwert
    Geändert von Elwert (17.11.10 um 15:34 Uhr)
     

Ähnliche Themen

  1. Array alphabetisch sortieren....
    Von ahnernoch im Forum PHP
    Antworten: 3
    Letzter Beitrag: 23.12.09, 21:17
  2. Array alphabetisch sortieren
    Von _BlueScreen im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 27.04.08, 23:21
  3. alphabetisch sortieren
    Von Winner im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 24.09.07, 08:57
  4. alphabetisch sortieren mit java
    Von taucher82 im Forum Java
    Antworten: 3
    Letzter Beitrag: 02.11.06, 22:09
  5. Variablen alphabetisch sortieren
    Von eierfeile im Forum Visual Basic 6.0
    Antworten: 19
    Letzter Beitrag: 01.12.03, 16:49