Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1320to1324
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Werte nach Übernahme sortieren
10.07.2013 11:42:13
Sylvio
Hallo Leute,
habe eine Userform mit zwei Textboxen in die ich Text eingebe der mir nach klick auf übernehmen in drei Tabellenblätter eingetragen wird.
Text aus Textbox1 in Tabelle1 ab Zeile A4 und gesplittet in Tabelle2 ab Zeile A1
Text aus Textbox2 in Tabelle3 ab Zeile A1.
Nun würde ich gerne das nach klick auf Übernahme die werte absteigend sortiert sind!
Habe schon einiges gefunden und ausprobiert hat aber nix funktioniert!
Hoffe ihr könnt helfen!
Gruß Sylvio

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Makrorekorder
10.07.2013 11:46:31
Klaus
Hallo Sylvio,
sortiere die Tabelle einmal per Hand, lass dabei den Makrorekorder laufen.
Füge den Rekordercode da ein, wo der sonstige Code für "Übernahme" steht. Eventuell dynamisierst du den fixen Bereich aus dem Rekorder noch mit der variablen Zeilenanzahl.
Besser kann keiner helfen, da wir deine Datei nicht kennen.
Grüße,
Klaus M.vdT.

AW: Makrorekorder
10.07.2013 11:55:42
Sylvio
danke für die schnelle Antwort!
das habe ich schon probiert!
anbei mal der Code der Userform der nur aus Daten_übernehmen_Click besteht!
Option Explicit
Private Sub Daten_übernehmen_Click()
Dim wsBau As Worksheet, wsArb As Worksheet, wsBauA As Worksheet
Dim lRowA As Long, lRowB As Long, lRowC As Long
Set wsBau = Worksheets("Baustellen")
Set wsBauA = Worksheets("BaustellenA")
Set wsArb = Worksheets("Arbeiten")
lRowA = wsBauA.Cells(Rows.Count, 1).End(xlUp).Row
lRowB = wsBau.Cells(Rows.Count, 1).End(xlUp).Row
lRowC = wsArb.Cells(Rows.Count, 1).End(xlUp).Row
If lRowB  "" Then
Worksheets("Arbeiten").Cells(lRowC, 1) = TextBox2.Text
Else
Worksheets("Arbeiten").Cells(lRowC, 1) = "n.a."
End If
End Sub

Private Sub Fenster_schließen_Click()
'UserForm schließen
Unload UserForm
End Sub

Gruß Sylvio

Anzeige
Genau da ...
10.07.2013 13:43:01
Klaus
... kopierst du den Makrorekorder-Code hin, und gut ist.
Wenn du mehr Hilfe brauchst musst du schon mit mehr Informationen und/oder einer Mustertabelle rüber kommen. Ich allerdings muss hier aussteigen, denn:
du hast xl2003, für diese Version kann ich keine Sortierroutinen schreiben (ich bin da selbst auf den Rekorder angewiesen). Aber im Endeffekt, ob du den Record Button selbst drückst oder ich mach das für dich ...
Grüße,
Klaus M.vdT.

AW: Genau da ...
10.07.2013 16:11:45
Sylvio
Habe es soweit hinbekommen nur schreibt er den neu eingegeben wert in die letzte Zeile
und erst nach Eingabe eines neuen wertes sortiert sich der vorherige wert!
Der neu eingegebene wert steht dann erstmal wieder in letzter Zeile! Unsortiert!
Gruß Sylvio

Anzeige
dann dreh es um!
10.07.2013 17:00:48
Klaus
Hi,
wenn es falschrum läuft, dann dreh es doch um. ERST eintragen, DANN sortieren.
Grüße,
Klaus M.vdT.

AW: dann dreh es um!
11.07.2013 08:19:39
Klaus
Hallo Sylvio,
du musst auch den GANZEN Rekordercode mitnehmen! Der Rekorder hat doch bestimmt gesagt: Sheets("Xx").Activate, Range("A1:A16").select .... und so weiter. Wenn du das alles einfach ignorierst ist doch klar, dass nichts bei rauskommt. In deinem Beispiel wurde drei mal auf die "selection" sortiert, es war aber Codeseitig gar keine Selection vorhanden!! Sprich, der Code hat nur zufällig funktioniert.
Ich war mal so frei, das ganze von drei Sortier-Codes auf einen runterzubrechen, der in einer Schleife über die Blätter läuft.
'Sortieren Baustellen
Dim wks As Worksheet
Dim fRow As Long
Dim lRow As Long
For Each wks In Sheets(Array("Baustellen", "BaustellenA", "Arbeiten"))
With wks
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
fRow = .Cells(lRow, 1).End(xlUp).Row
.Range(.Cells(fRow, 1), .Cells(lRow, 1)).Sort _
Key1:=.Cells(fRow, 1), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
End With
End With
Next wks
Es wäre warscheinlich besser fürs Verständniss, pro Blatt einen eigenen Sortiercode zu benutzen. Das währe zwar länger und langsamer, aber intuitiver verständlich. Allerdings habe ich den Eindruck, dass du, sorry, dich null dafür interessierst was dein Code macht und einfach irgendwas per Copy Paste in dein Blatt haust ohne auch nur einen Buchstaben zu hinterfragen. Von daher pfeiff ich aufs einfach-halten und erklären und geb dir gleich den optimierten Code mit Schleife und variablen Sortierbedingungen.
Grüße,
Klaus M.vdT.
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige