Ga naar inhoud

Datum in naastgelegen kolom weergeven als een celwaarde wijzigd


jmn

Aanbevolen berichten

Beste,

 

Ik heb een VBA code gevonden die náást een cel de datum zet als deze cel van inhoud veranderd.

Het betreft een proces-document, waarin ik achter personen 'vrij' of 'bezig' zet als ze een taak hebben.

Vrij of bezig wordt bepaald door een grote formule die in de rest van het document zoekt naar codes die bij die persoon horen.

 

Nu wil ik achter 'vrij' of 'bezig' een datum zetten, zodat ik in één oogopslag kan zien hoeláng ze al 'vrij' of 'bezig' zijn. Dus als dit woord veranderd zet hij de datum ernaast.

 

Met onderstaande vba-code werkt dat, maar dan moet ik 'vrij' en 'bezig' handmatig invullen.

Laat ik dit met de formule weergeven, dan werkt die code niet.

Snap ik op zich wel, want de inhoud van de cel (die grote formule) wijzigt niet. Alleen de weergave switcht van vrij naar bezig.

 

Heeft iemand andere ideeën?

 

Dit is de code:

 

Private Sub Worksheet_Change(ByVal Target As Range)
'Update 20140722
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("B:B"), Target)
xOffsetColumn = 1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh-mm-ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub

 

Ik ben benieuwd.

 

Groet,

Johan

Link naar reactie
Delen op andere sites

Bijgevoegd een voorbeeldbestandje.

Als ik in cel A1 '1' zet veranderd B1 in 'vrij'. In alle andere gevallen staat er 'bezig'.

De VBA code genereerd in cel C1 de datum en tijd waarop B1 wordt gewijzigd.

Maar dat werkt niet als ik via A1 de waarde van B1 laat wijzigen. Dat werkt alleen als ik handmatig cel B1 wijzig.

 

Op zich snap ik het wel, want de inhoud van cel B1 (een formule) wijzigt niet echt natuurlijk. Die wordt alleen uitgevoerd.

Hoe kan ik dat wél laten werken?

 

 

 

VBAtest.xlsm

Link naar reactie
Delen op andere sites

'Vrij' naar 'Bezig' verandert voorwaardelijk door A1.

Maar de inhoud van B1 (=ALS(A1=1;"vrij";"bezig") veranderd niet wezenlijk. Die formule blijft intact. En daarom merkt die VBA code misschien geen verandering op.

 

Ik heb 0 ervaring met VBA. Dus misschien zeg ik erg domme dingen...

Link naar reactie
Delen op andere sites

Ik heb het document even ontdaan van alle privacy gevoelige info. Hopelijk wordt het dan wat duidelijker. Al ziet het document er zo een beetje raar uit.

Het gaat om het proces uittypen van uitgesproken teksten en lezingen. De gegevens daarvan staan in de kolommen A-D

Deze worden uitgetypt, 2x gecorrigeerd en tenslotte kijkt een eindcorrector (een neerlandicus) ze na.

 

Al die mensen heb ik een code gegeven, zoals in kolom AF te zien is. Namen zijn dus verwijderd.

Op het moment dat ik een typist(e) een audiobestand toestuur, zet ik in kolom E de code van die typiste, met in kolom F de datum waarop ik dat gedaan heb.

Op dat moment verandert en verkleurt ook 'vrij' naar 'bezig' in kolom AE.

Als de typist klaar is en ik het werk binnen heb, zet ik in kolom G zijn of haar code, gevolgd door een 'k' (van klaar).

Op dat moment verandert en verkleurt 'bezig' weer naar 'vrij'.

 

Op dezelfde manier gaat de tekst daarna verder door de drie volgende controle rondes.

 

Dit werkt allemaal prima. Ook allerlei andere snufjes die ik ingebouwd heb, werken goed genoeg.

 

Echter: sommige typisten/correctoren geven aan bijv. maar ééns in de twee maanden tijd te hebben.

Daarom wil ik in kolom AG de datum laten zetten, wanneer ik voor het laatst de code van deze medewerker in een van de kolommen E-V heb ingevuld.

Ik snap, dat kan ook handmatig, maar het is leuker dat het automatisch gaat.

 

Mij leek daarom het handigst dit te doen op het moment dat 'bezig' weer in 'vrij' verandert. Het werk is dan ingeleverd en je kunt in één keer zien wanneer dat geweest is, zonder dat je elke keer heel die tabel na moet zoeken op de naamcode en dan hopen dat je de laatste (qua datum) gevonden hebt, omdat de codes meermalen voor kunnen komen in heel die proceslijst.

 

16 uren geleden, emielDS zei:

 

Bedankt, @emielDS, maar de datum wijzigde hij niet als ik kruisjes zette of verwijderde op tabblad A.

 

17 uren geleden, Haije zei:

Maar de uitkomst van de formule wijzigt als A1 wijzigt?

 

Dan de moet A1 de "trigger" zijn en niet B1

 

@HaijeIk hoop dat met dit document duidelijk is geworden dat dat vanwege de omvang van die lijst niet handig is. Of zie ik wat over het hoofd?

 

 

 

 

 

VBAtest_2.xlsx

Link naar reactie
Delen op andere sites

4 uren geleden, emielDS zei:

bedoel je dan zoiets? Wel uw macro inschakelen

VBAtest_2.xlsm 42.8 kB · 0 downloads

Dat gaat er wel op lijken.

Alleen wordt nu de datum slechts met een offset in kolom AG gezet. En niet achter de naamcode van die persoon.

Dus bijv. in V13 typ ik 'klk', omdat 'kl' klaar is met z'n werk.

In cel AG26 verwacht ik dan de huidige datum achter meneer 'kl'

Nu komt die datum in AG13, dus alleen een aantal kolommen naar rechts, maar niet gelinkt aan de persoon 'kl'.

 

Kunt u hier iets mee?

 

Dank in elk geval voor het meedenken...

 

Gr.

Johan

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.