Ga naar inhoud

Automatisch werkblad sorteren na invullen laatste kolom


j.snijder

Aanbevolen berichten

Hallo,

Ik heb een klein probleempje ik zou graag een werkblad automatisch willen sorteren als ik de laatste kolom gevuld heb met gegevens en daarna de cursor op de volgende lege regel willen krijgen.

Ik dacht aan de volgende oplossing:

Code:

Private Sub Worksheet_Change(ByVal Target As Range)

'Als de laatste kolom is ingevoerd, dan wordt de lijst

'gesorteerd en gaat de cursor naar de lege cel in kolom A.

If Intersect(Target, Range("K2:K1000")) Is Nothing Then Exit Sub

Columns("A:K").Select

Selection.Sort _

Key1:=Range("A2"), Order1:=xlAscending, _

Header:=xlYes, OrderCustom:=1, _

MatchCase:=False, Orientation:=xlTopToBottom

Range("A1000").End(xlUp).Offset(1, 0).Select

End Sub

***

-Ik start sorteren vanaf regel 2 omdat de titel vast staat en niet mag worden mee gesorteerd

-De range van K2:K1000 is gekozen als bereik alleen heb ik in het werkblad nog maar 200 regels (op uitbreiding voorbereid dus

-Kolom A bevat de naam van de plant (moestuin) en de volgende kolommen de zaai en groei gegevens.

-Sorteren moet vanwege kolom A gebeuren omdat deze in een ander werkblad een ZOEKEN functie heeft op kolom A

-Range (A"1000") ook weer op uitbreiding voorbereid maar ik heb dus zoals gezegd nog maar 200 regels

echter als ik de code in het makro zet dan werkt het niet, vreemd.

Ik heb de code ooit eens eerder toegepast in een andere worksheet en toen deed hij het wel maar das wel erg lang geleden.

****

Link naar reactie
Delen op andere sites

Aha, okay dat was de reden :) het werkt nu wel, dom ;)

Komt nu een ander probleempje naar voor, ik heb inmiddels 2 kolommen erbij gekregen die buiten de range vallen, die moeten er dan bij, dus wordt alles voor kolom K nu kolom M.

Het lijkt te werken maar bij het sorteren vallen alle regels niet op de juiste plaats en krijg ik nu bijvoorbeeld de zaaitijden van regel 10 op regel 11 omdat er ergens een regel door het sorteren is tussengevoegd, hmmm.

Kolom A moet alleen als sorteerbron worden gebruikt en van de andere kolommen moeten de regels naturlijk bijeen blijven bij de oorspronkelijke regel.

ZOu mijn fout kunnen liggen omdat ik kolom A tot K sorteer ?

- - - Updated - - -

Columns("A:K").Select

hoort nog bij vorige post

aangepast door j.snijder
Link naar reactie
Delen op andere sites

Het werkt, was inderdaad mijn denkfout en moest de kolom letters aanpassen naar de laatste kolom (M) in mijn geval.

Nu moet ik verplicht een waarde in de laatste kolom zetten, het zou mooi zijn als ik dat niet hoefde en bij verlaten van de laatste cel de sortering al zou beginnen, dat zal aan de aangeroepen vba liggen, is nu: "Private Sub Worksheet_Change(ByVal Target As Range)"

Ik weet alleen niet of er ook een sub bestaat die bij exit van de cel de aktie zal uitvoeren, wie kan me helpen ?

Link naar reactie
Delen op andere sites

Waarom laat je hem niet sorteren bij het openen van de sheet, of het afsluiten?

Een Enter event staat er niet bij, wel een Change.....maar dan zal ie tekens als je van cel veranderd de aktie uitvoeren.

Je zou er ook nog een dubbelklik event van kunnen maken, alléén handig als je er alléén mee werkt.

Je krijgt dan iets als:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

bucky

Link naar reactie
Delen op andere sites

  • 2 weken later...

De eerst volgende lege cel in een kolom selecteren kan je als volgt.

Range("A1").Select '(of een andere cel aan het begin van de kolom

Selection.End(xlDown).Select '(hier kom je op de laatste cel van de reeks)

r = ActiveCell.Row (hiermee bepaal je in welke rij de reeks eindigt of ander gezegd welke cel actief is vb Cel A285

cells(r+1,k).select (nu kom je op de eerst volgende lege cel)

Is het dit wat je zocht?

Link naar reactie
Delen op andere sites

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.