Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: Beagle Otis am Oktober 29, 2015, 10:04:36 Vormittag
-
Moin Moin
Ich habe da mal ein Problemchen:
Ich habe in einer Tabelle die folgenden Werte:
A3:A112 fortlaufende Nummerierung
B3:B112 Namen
C3:C112 Kürzel
D3:D112 Bemerkung
E3:AI112 Kalender
Nun habe ich es per VBA hinbekommen, das sich nach Eingabe eines neuen Namens mit Kürzel der Bereich B3:D112 automatisch nach Namen aufsteigend sortiert.
So weit, so gut ...
Nun möchte ich in der selben Liste im Bereich B114:D123 das selbe haben, aber ich bekomme es einfach nicht hin. Ich bin wohl zu blond, aber es sortiert sich einfach nichts. Wie bekomme ich den zweiten Code in die Formel bzw. nehme ich einen eigenständigen, neuen Code dafür?
Ich hoffe, das klappt mit dem Anhang ...
-
Oh, habe gerade entdeckt, das man ganze Dateien anhängen kann ...
Na dann:
-
Moin,
füge einfach eine Leerzeile oberhalb der "Fremdarbeiter" ein, dann sollte es kein Problem sein. Dann versucht Excel nicht dauernd, den gesamten zusammenhängenden Bereich als zu sortierenden Range einzurichten.
-
Ok, versuche ich nachher mal. Danke :D
-
Ähm, nö ...
Hat nicht geklappt. Ich habe eine Leerzeile eingefügt, habe alles in dem bereich gelöscht, die bedingte Formatierung raus genommen, nix.
Wo habe ich denn meinen Denkfehler?
Habe die Tabelle mit der Leerzeile noch mal ran gehängt.
Ist aber jetzt Excel 2007, da ich nun zu Hause bin.
-
Zugegeben,
ich hatte mir den Code nicht angesehen, weil die fehlende Leerzeile einfach zu "unsauber" war. - Verwende ausschließlich diese Sub, dann klappt es:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngEigen As Range, rngFremd As Range
Dim rngC1 As Range, rngC2 As Range
With ActiveSheet
Set rngEigen = .Range("B3:D112")
Set rngFremd = .Range("B115:D124")
Set rngC1 = .Range("B3")
Set rngC2 = .Range("B114")
'Beschränken der Makroausführung auf den Bereich xy bis xy
If Not Application.Intersect(Target, rngEigen) Is Nothing Then
rngEigen.Sort Key1:=rngC1, Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
rngC1.Select
Exit Sub
End If
If Not Application.Intersect(Target, rngFremd) Is Nothing Then
rngFremd.Sort Key1:=rngC1, Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
rngC2.Select
End If
End With
End Sub
-
Jaaaa, das war es ...
... schon fast 8)
Ich habe es noch so hingewurschtelt, das es erst sortiert, wenn ich nach dem Namen (Spalte B) das Kürzel (Spalte C) eingegeben habe.
Hat sogar geklappt ;D
Trotzdem natürlich riesen Dank, allein hätte ich es nie hinbekommen :D
Habe die Tabelle noch mal angehängt, vielleicht braucht sie ja noch mal jemand.
-
Moin,
das finde ich gut. Ich hatte genau den Code schon fast fertig. Dann aber wieder raus genommen, weil ich genau das erreichen wollte: Du suchst Mittel und Wege, das Ganze etwas "runder" zu machen. Und du hast es geschafft.
-
*rotwerd*
Daaaaaankeeee ...
Geb mir Mühe und ich bin dann halt auch stolz, wenn es klappt. Bin ein bisschen wie ein Terrier: Festbeissen und nicht mehr loslassen ;)
-
Das ist auch gut so. Denn keiner von uns Helfern ist mit dem heutigen Excel-Wisse geboren. Und ich bin Autodidakt; ich weiß also, was es bringt, sich selber zu motivieren und nach Erreichen des Ziel so richtig zufrieden und auch stolz zu sein.
-
Jupp, genau so.