Zeilen sortieren mit VBA nach Wert

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Zeilen sortieren mit VBA nach Wert
von: Lukas
Geschrieben am: 16.09.2015 22:08:01

Hallo liebe Gemeinde,
folgendes Problem hindert mich an der Fertigstellung meines Projekts.
Ich habe eine Eingabemaske (http://abload.de/img/bildschirmfoto2015-095psja.png) und eine Datenbank (http://abload.de/img/bildschirmfoto2015-0970so1.png), sämtliche Daten werden beim klick auf "Speichern" in das Tabellenblatt Datenbank in die nächste freie Zeile Horizontal übertragen.
In der Eingabemaske (Erstellen) befindet sich ein Dropdown das sich auf die Nummern (Spalte A in Datenbank) bezieht und beim klick auf "Laden" wird die Zeile 2 der Datenbank (blau markiert) in die Eingabemaske zurück übertragen, um die Daten zu bearbeiten etc.
Wie kann ich die Datenbank so sortieren, das die ausgewählte Nummer in der Eingabemaske (Dropdown) auf Zeile 2 hochspringt, sodass ich die Daten dann rüber kopieren kann?
Mit dem Filter klappts nicht, da die Zeilen nur ausgeblendet werden. Es muss also ein VBA Code her, der bsp. die Zeile mit der Nummer 50 auf Zeile 2 raufschiebt. (die Nummer muss von der Eingabemaske geholt werden.
Leider konnte ich dazu nach Stundenlanger Suche nichts finden, ich hoffe ihr könnt mir weiterhelfen.
Viele Grüße Lukas

Bild

Betrifft: Beispieldatei?
von: Michael
Geschrieben am: 16.09.2015 22:26:16
Hallo Lukas,
von irgendeinem Server hole ich mir keine Beispieldatein, und mit PNGs kann sowieso keiner was testen, geschweige denn sehen, was Du etwa bereits programmiert hast.
Also: bitte lade ne Beispieldatei hoch.
Ich sehe keinen grundsätzlichen Grund, weshalb eine Eingabemaske ausschließlich Daten aus der 2. Zeile verwenden können sollte. Soll heißen: anstatt wie auch immer zu sortieren, würde ich den Code der Maske so anpassen, daß er mit jeder beliebigen Zeile arbeitet.
Schöne Grüße,
Michael

Bild

Betrifft: AW: Beispieldatei?
von: Lukas
Geschrieben am: 16.09.2015 22:36:41
Hallo Michael,
der Upload hier mit der Board Software klappt leider nicht, warum auch immer. Daher ein Link zu meiner Dropbox: https://www.dropbox.com/s/ewxzzaep3vlq9si/Beispiel.xlsm?dl=0
Grüße

Bild

Betrifft: AW: Beispieldatei?
von: Michael
Geschrieben am: 16.09.2015 22:48:27
Hi Lukas,
geht nicht, und ich mag jetzt auch nicht sonstwas im Browser aktivieren, damit es geht.
Wenn Deine Datei zu groß ist, lösche halt was raus, Du solltest eh keine "echten" Daten veröffentlichen, ein paar Zeilen Spieldaten tun's schon.
Gruß,
M.

Bild

Betrifft: AW: Beispieldatei?
von: Lukas
Geschrieben am: 16.09.2015 22:53:23
Ich kann leider nur rtf und txt Dateien hochladen. Weiß nicht an was das liegt.

Bild

Betrifft: AW: Beispieldatei?
von: Michael
Geschrieben am: 16.09.2015 23:04:34
hast Du nen Mac?
Standardmäßig geht im Forum JPG, GIF, TXT, XLS, XLSM usw.
Ach so, isses das?
Userbild
Klicke von "benutzerdefiniert" auf alle

Bild

Betrifft: AW: Beispieldatei?
von: Lukas
Geschrieben am: 16.09.2015 23:10:52
Jop lag am Mac, in der VM gehts: https://www.herber.de/bbs/user/100238.xlsm

Bild

Betrifft: Beispieldatei ok, aber - Grundsätzliches
von: Michael
Geschrieben am: 16.09.2015 23:51:53
Hi Lukas,
hm, hm, die Formatierung sieht auf Win irgendwie seltsam aus.
Insbesondere sehe ich kein DropDown-Feld, wo soll das sein? Weder in M3 noch M11 dropdownt sich was.
Es ist mir heute zu spät, mich da reinzuvertiefen, nur so viel:
a) das datensatz_laden läßt sich deutlich optimieren und
b) es ist keine vernünftige Datenstruktur vorhanden. Stichworte: Normalisierung, eindeutige Schlüssel, Vermeidung von Redundanzen usw.
Alles weiter morgen.
Baba,
M.

Bild

Betrifft: AW: Beispieldatei ok, aber - Grundsätzliches
von: Lukas
Geschrieben am: 17.09.2015 00:00:56
Ich möchte wirklich nur ein VBA Code der mir eine Zeile die ich benötige in Zeile 2 hochschiebt. Alles andere Funktioniert genau so wie ich das möchte und entspricht genau meinen Ansprüchen :)
Das Dropdown befindet sich im Feld M11, wie das unter Windows aussieht weiß ich nicht, ich arbeite ausschließlich unter OSX.
Schönen Abend
Lukas

Bild

Betrifft: AW: Beispieldatei ok, aber - Grundsätzliches
von: Michael
Geschrieben am: 17.09.2015 00:21:01
Da fällt mir doch noch ne Minimal-Lösung ein. Du könntest evtl. in der betreffenden Zeile ein X in einer bislang unbenutzten Spalte anbringen und dann danach sortieren.
Die Suchfunktion beherrschst Du ja offensichtlich, also in einzelnen Schritten:
suche Nr. in Spalte A
schreibe in Spalte ZZ ein x
markiere A2 bis ZZ(untersteZeile)
sortiere nach Spalte ZZ (absteigend)
Dann hast Du die Zeile da, wo Du sie haben willst und kannst sie kopieren - und gleich das x entfernen.
Hinterher kannst Du wieder nach A sortieren.
Schönen Abend auch,
Michael

Bild

Betrifft: AW: Beispieldatei ok, aber - Grundsätzliches
von: Lukas
Geschrieben am: 17.09.2015 15:53:19
Okay jup das ist eine sehr gute Idee, der folgende Code sucht nun den Wert der im Dropdown (M11) ausgewählt wurde in Spalte A vom Blatt Datenbank.
Wie bringe ich ihm jetzt bei, dass er mir dann auch z.B. in die letzte Spalte vom Datensatz den er gefunden hat in "DZ" ein x reinschreibt?
Dann muss ich nur noch das Sortieren auslösen und die Daten aus Zeile 2 kopieren (was ja schon klappt)

Sub datensatz_laden()
Dim Wks1 As Worksheet, Wks2 As Worksheet, Found As Object
    
                Set Wks1 = Sheets("Erstellen")
                Set Wks2 = Sheets("Datenbank")
                If Not IsEmpty(Wks1.Range("M11")) Then
                    
                    Set Found = Wks2.Columns(1).Find(Wks1.Range("M11"), LookIn:=xlValues,  _
lookat:=xlWhole)
                    
                    If Found Is Nothing Then
                            
                            MsgBox "Datensatz nicht vorhanden."
                    Else
                            'CODE HIER ?!
                            MsgBox "Datensatz wurde geladen."
                    End If
                End If
Bitte um Hilfe
Danke Lukas

Bild

Betrifft: AW: Beispieldatei ok, aber - Grundsätzliches
von: Werner
Geschrieben am: 17.09.2015 17:42:33
Hallo Lukas,
Versuch mal

Sub datensatz_laden()
Dim Wks1 As Worksheet, Wks2 As Worksheet, Found As Range
    
                Set Wks1 = Sheets("Erstellen")
                Set Wks2 = Sheets("Datenbank")
                If Not IsEmpty(Wks1.Range("M11")) Then
                    
                    Set Found = Wks2.Columns(1).Find(Wks1.Range("M11"), LookIn:=xlValues,  _
lookat:=xlWhole)
                    
                    If Found Is Nothing Then
                            
                            MsgBox "Datensatz nicht vorhanden."
                    Else
                            'CODE HIER ?!
                            With Wks2
                                 .Cells(Found.Row, 130) = "x"
                            End With
                            MsgBox "Datensatz wurde geladen."
                    End If
                End If
Ungetestet.
Gruß Werner

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeilen sortieren mit VBA nach Wert"