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
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
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ß
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
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
Top


Gehe zu:


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