• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Excel logboek geschiedenis

Status
Niet open voor verdere reacties.

DarkMagicianV

Gebruiker
Lid geworden
27 nov 2017
Berichten
17
Hallo allemaal,

Naar aanleiding er niet uit te komen met excel hoop ik dat iemand mij hier mee kan helpen.
Ik ben bezig met een voorraad telling lijst en heb daar ook een schuifbalk in gemaakt met de inname en uitname per stuk.
Nu wil ik graag dat als ik de voorraad verander dat er dan een melding komt met de datum en tijd en hoeveel er in en uit gaat, en dat hij dan alle wijzigingen blijft onthouden. (heel jaar)

Kan iemand mij daarmee helpen?

Mvg,

Stephanie
 
Welkom hier.

Het antwoord op je (enige) vraag hierboven:
Kan iemand mij daarmee helpen?
is: vast wel.

Maar: aangezien niemand hier een glazen bol heeft, en dus niet weet hoe je bestand in elkaar zit, raad ik je aan om een representatief excel-voorbeeld te plaatsen. Geef daarin duidelijk aan wat je al hebt en ook (handmatig) wat je wilt zien. Dan zul je sneller een geschikt antwoord krijgen.
 
Laatst bewerkt:
Hoi, welkom op het forum:)
Doe er een gelijkend vb bestandje bij met wat Jan of Katrien gegevens,dan krijg je sneller en doelgerichter een antwoord.
(de nodige code voor uw vraag heb ik in een van mijn excel kastjes liggen)
 
Dank u wel voor uw reacties.

Ik heb een bijlage toegevoegd voor meer duidelijkheid.
Ik wil dat als ik iets verander in B en in F dat er een datum/tijd en hoeveel aantal ik dan heb ingevuld bij de voorraad. Dus als ik bijvoorbeeld 1 fout maak dat ik dan kan zien hoeveel ik van de voorraad "B"heb afgehaald.
Een soort van logboek dat alle acties die ik dan uitvoer op die 2 kolommen B en F wordt onthouden.

Is dat mogelijk?
 

Bijlagen

  • Voorraad telling lijst.xlsx
    14,2 KB · Weergaven: 72
Het gebruik van de form control scrollbar i.p.v. activeX was voor mij een aardige uitdaging, die ik heb aangegaan ...

Wat heb ik gedaan:
1. Ik heb Blad1 gekopieerd naar een sheet genaamd "Mirror". Deze wordt gebruikt om te controleren of een waarde is gewijzigd
2. Ik heb een sheet genaamd "Log" gemaakt met 4 kolommen: A=Model, B=Oud, C=Nieuw, D=datetimestamp

Ik heb achter Blad1 de volgende code geplakt:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Dim i As Long

If Not Intersect(Target, Range("B8:B52")) Is Nothing Then
    For Each r In Target.Cells
        If r.Value <> Sheets("Mirror").Range(r.Address).Value Then
            With Sheets("log")
                i = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
                .Cells(i, "A").Value = Range(r.Address).Offset(0, -1).Value
                .Cells(i, "B").Value = Sheets("Mirror").Range(r.Address).Value
                .Cells(i, "C").Value = r.Value
                .Cells(i, "D").Value = Date & " " & Time
            End With
            Sheets("Mirror").Range(r.Address).Value = r.Value
        End If
    Next
End If

End Sub

En in een module de volgende code. In deze tweede code doe ik wel iets "vies", nl. het nogmaals wijzigen van de waarde in kolom B om de eerste code te triggeren. Dit is natuurlijk anders op te lossen:
Code:
Sub ScrollBar_Change()
Dim strCaller As String
Dim objScrollBar As Object

strCaller = Application.Caller
For Each objScrollBar In Blad1.ScrollBars
    If objScrollBar.Name = strCaller Then
        Exit For
    End If
Next

Blad1.Range(objScrollBar.LinkedCell).Value = objScrollBar.Value

End Sub

Het vervelende is dat iedere scrollbar assigned moet worden aan de macro ScrollBar_Change. In dit voorbeeld dus zo'n 40 keer. Het wordt natuurlijk echt vervelend als je echte bestand veel meer scrollbars bevat ...
 
"We" als in de meer ervaren helpers? :)

Ik zal mij er eens in verdiepen. Dank je wel.
 
@snb

Ik moet er nog wat mee spelen, maar als ik het goed begrijp is deze mogelijkheid hier niet van toepassing. Het betreft geen controls op een userform (de link) en ook geen ActiveX controls. Het betreft losse "Form Controls" (menu Developer > Insert > Scroll Bar (Form Control).

Ik heb geen idee hoe ik hier een event aan kan hangen. Wat zie ik over het hoofd?
 
Plaats eens een voorbeeldbestand.
 
Ik heb het gevoel dat ik dit topic "hijack". Maar kun je het voorbeeldbestand uit #4 pakken en daar mijn code uit #5 in plakken?
 
Dan start je toch gewoon je eigen draad ?
 
@snb
Ik heb hier een andere oplossing bedacht. Het verhaal met klasses etc. zal ik nog eens bestuderen om te gebruiken in een eigen toepassing. Als ik daar niet uit kom zie je vanzelf een "draadje" verschijnen

@TS
Iedere Scroll Bar (Form Control) heeft standaard de mogelijkheid om een macro te koppelen. Dit is "OnAction". Volgens mij kan de hele handmatige update problematiek dan ook vermeden worden door het (eenmalig) draaien van de volgende macro:
Code:
Sub AssignMacroToScrollbar()
Dim objScrollBar As Object

For Each objScrollBar In Blad1.ScrollBars
    Blad1.Shapes(objScrollBar.Name).OnAction = "Scrollbar_Change"
Next

End Sub
 
Laatst bewerkt:
Bedankt voor de reactie, maar ik snap er helemaal niks meer van haha.
Ik ben niet echt bekend met excel codes.
Moet ik nu de codes ergens in plakken? :confused:
 
Helaas kan ik geen bestand uploaden. Dit wordt op de één of andere manier geblokkeerd op deze PC.

Maar goed. Misschien kan ik je er doorheen loodsen ...
Allereerst maak je twee tabbladen aan.
De eerste noem je "Mirror"
Hier kopieer je kolom A en kolom B van de tab "Blad1" naar toe
De tweede noem je "Log"
In regel 1 typ je achtereenvolgens in kolom A=Model, B=Oud, C=Nieuw, D=datetimestamp

Dan komt het iets lastiger gedeelte ...
Via <Alt>+<F11> of menu "Developer" > "Visual Basic" kun je VBA openen
Als het goed is zie je links een venster genaamd "Project - VBAProject" (anders te openen via het menu "View" > "Project Explorer")
Dubbelklik op Blad1 (Blad1)
Rechts wordt een venster geopend
Kopieer hierin de volgende code
Code:
Sub AssignMacroToScrollbar()
Dim objScrollBar As Object

For Each objScrollBar In Blad1.ScrollBars
    Blad1.Shapes(objScrollBar.Name).OnAction = "Scrollbar_Change"
Next

End Sub
Run deze code m.b.v. van het "play" symbool in het menu of <F5>
Selecteer de code en verwijder deze (dit was om éénmalig alle scrollbars te koppelen

Kopieer vervolgens de code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Dim i As Long

If Not Intersect(Target, Range("B8:B52")) Is Nothing Then
    For Each r In Target.Cells
        If r.Value <> Sheets("Mirror").Range(r.Address).Value Then
            With Sheets("log")
                i = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
                .Cells(i, "A").Value = Range(r.Address).Offset(0, -1).Value
                .Cells(i, "B").Value = Sheets("Mirror").Range(r.Address).Value
                .Cells(i, "C").Value = r.Value
                .Cells(i, "D").Value = Date & " " & Time
            End With
            Sheets("Mirror").Range(r.Address).Value = r.Value
        End If
    Next
End If

End Sub

en daaronder de code:
Code:
Sub ScrollBar_Change()
Dim strCaller As String
Dim objScrollBar As Object

strCaller = Application.Caller
For Each objScrollBar In Blad1.ScrollBars
    If objScrollBar.Name = strCaller Then
        Exit For
    End If
Next

Blad1.Range(objScrollBar.LinkedCell).Value = objScrollBar.Value

End Sub

Sluit dit venster met het kruisje of via <Alt>+<Q>

Sla het bestand op als macro enabled workbook (extensie .xlsm).

Probeer uit of het naar wens werkt. Doe een wijziging en check de tab "Log".

Succes!
 
Het is gelukt op 1 ding na.
Als ik op de schuifbalk klik dan krijg ik een melding. "De macro'macro enabled workbook.xlsm'!Scrollbar_Change kan niet worden uitgevoerd. De Macro is wellicht niet beschikbaar in dit werkboek of alle macro's zijn mogelijk uitgeschakeld.
Wat doe ik verkeerd? :confused:
 
Ik dacht het gemakkelijk te maken door alles in hetzelfde venster te plakken. Helaas werkt dat dus niet ...

Als je weer naar VBA gaat.
Dubbelklik op Blad1 (Blad1)
Verwijder de volgende code:
Code:
Sub ScrollBar_Change()
:
:
End Sub

Klik in het venster links genaamd "Project - VBAProject"met je rechtermuisknop op "Modules"
Kies in de popup "Insert" en vervolgens "Module"
Je ziet nu dat er een module wordt aangemaakt genaamd "Module1"
Dubbelklik hierop
Kopieer in het venster rechts de code:
Code:
Sub ScrollBar_Change()
:
:
End Sub

Probeer nog eens ...
 
Laatst bewerkt:
Ik krijg nu een foutmelding: Fout 91 tijdens uitvoering: objectvariabele of blokvariabele With is niet ingesteld.
En als ik op foutopsporing klik dan komt een gele venster in "blad " te voorschijn " Blad1.Range (objScrollBar.LinkendCell) . Value = objScrollbar.Value
 
Als je de Nederlandse versie van Excel hebt dan heet het object 'Schuifbalk en dat gaat natuurlijk nooit matchen met 'Scroll Bar'.

Even
Code:
If objScrollBar.Name = strCaller Then
wijzigen in
Code:
If objScrollBar.Name = "Scroll Bar " & Split(strCaller)(1) Then

En dan nogmaals proberen.
 
@Peter B

Code:
Sub M_snb()
  For Each it In ScrollBars
    it.OnAction = "M_ScrollbarChange"
  Next
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan