Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Automatisch sortieren wenn eine Zeile Von Bis ausgefüllt ist
#1
Hallo Leute

Könnt ihr mir bitte bei folgenden Problem lösen. Nachfolgend habe ich eine Beispieltabelle.
Die soll automatisch per VBA sortiert werden nach Spalte B.
Ich habe auch schon VBA-Script gefunden für automatisches Sortieren.

Option ExplicitPrivate Sub Worksheet_Change(ByVal Target As Range)
Dim Sortierspalte As String
Dim Bereich As String
Bereich = "A1:D20"
Sortierspalte = "B"
ActiveSheet.Range(Bereich).Sort _
 Key1:=Range(Sortierspalte & "1"), Order1:=xlAscending, _
 Header:=xlGuess, MatchCase:=False, _
 Orientation:=xlTopToBottom
End Sub

Also das funktioniert im Prinzip schon. Nur möchte ich, das das Sortieren erst ausgeführt wird, 
wenn z.B. in der dritten Zeile von A3 bis D3 alle Zellen befüllt sind bzw. nicht leer sind.
Und so soll es auch bei den anderen Zeilen passieren. Wie müßte man das Script erweitern.
Wäre prima, wenn ihr das hin kriegt.

Gruß


Tabelle1

ABCD
1NameDatumNummerBenennung
2Bernd05.04.2016X102Halter
3Robert24.03.2016X155Leiste
4Hans21.03.2016X245Schiene
5Klaus22.03.2016X123Feder
6
7

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Antworten Top
#2
Hallöchen,

im Prinzip so:

Code:
If WorksheetFunction.CountA(Range("A3:D3")) = 4 Then
  'Tu was
End If
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • merkurus
Antworten Top
#3
Hallo

Danke für die Antwort.
Ich hab jetzt mal probiert, ob ich das flexibel für anderen Zeilen auch hin bekomme.
Klappt aber nicht so toll wie es soll.
Werde es doch jetzt mit einem anklickbaren Button machen.
Sollen ja auch andere Mitarbeiter mit der Liste arbeiten können.

Gruß
Antworten Top
#4
Hallo,

so z.B.:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 With Me.Range("A1:D20")
   If Not Application.Intersect(.Cells, Target.EntireRow) Is Nothing Then
     If Application.CountA(Application.Intersect(.Cells, Target.EntireRow)) = 4 Then
       .Sort Key1:=.Cells(1, 2), Order1:=xlAscending, Header:=xlYes, _
             MatchCase:=False, Orientation:=xlTopToBottom
     End If
   End If
 End With
End Sub

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • merkurus
Antworten Top
#5
Hallo Uwe

Vielen Dank. Das funktioniert ja perfekt. Genau so wollte ich das. Jetzt hat sich nämlich noch ein anderes Problem gelöst.
Man kann jetzt auch die Rückgängig-Funktion benutzen. Jedenfalls solange bis noch nicht alles eingegeben ist in einer Zeile,
Ich glaube so kommen meine Kollegen zurecht.

Gruß

Thumps_up
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste