• 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.

Macro's

Status
Niet open voor verdere reacties.

GeertHeinen

Gebruiker
Lid geworden
3 okt 2013
Berichten
17
Heb een bestand waar op div bladen wat gegevens moeten worden ingegeven.
Op blad LMRA bv moeten minimaal de gegevens onder A, B W en C worden ingegeven.
Afhankelijk van de ingave wordt bepaald of het blad WVG of TRA ingevuld moet worden.
Als uitkomst is dat TRA ingevuld moet worden dan moet men weer minimaal enkele gegevens invullen om daarna naar WVG te mogen om in te vullen.
Door wat code wordt dit gecontroleerd.
Maar als ik dan bij bv op het blad WVG iets in ga vullen krijg ik meldingen dat ik andere bladen moet invullen, wat al is gebeurd.
Hoe kan ik dit voorkomen.
Kan ik macro's alleen op het blad laten uitvoeren als deze ook actief zijn? Dus alleen de macro's voor blad LMRA uitvoeren als LMRA actief is enz.
Wie kan me helpen. Kan het überhaupt.
 

Bijlagen

  • Werkvergunning_Versie_240415test.xlsb
    93,1 KB · Weergaven: 28
Eventmacro's worden alleen uitgevoerd op het blad waar ze zijn geplaatst. Acties op andere werkbladen kan je in dergelijke macro's uitvoeren door de opdracht vooraf te laten door de naam van het blad waarop je iets wilt uitvoeren, zoals: Sheets("Bladnaam").Range("A1")= etcetera. Als je wilt controleren of op een blad alle noodzakelijke cellen zijn ingevuld wanneer het de gebruiker naar een ander blad gaat, kan je dat doen in het Worksheet_Deactivate event. Hou er daarbij wel rekening mee dat het blad waar naartoe werd gegaan al wel het Activesheet is en je dus eventueel het blad dat werd verlaten weer actief moet maken.
 
#Edmoor

zou je in het Attached File wat voorbeelden willen zetten.
Ben hier niet zo in thuis, misschien met wat aanpassingen dat ik da de rest kan doen.
Wat je in #2 verteld klinkt heel mooi maar dan houdt het voor mij op.
Ik hoop dat je me wil helpen.
 
Dat in nu net het probleem. Wordt veel verteld maar als je niet weet waar alles te plaatsen is er geen vooruitgang.
Heb liever wat voorbeeldjes in mijn bestand dat hoop ik dat ik het ga begrijpen.
 
Je begrijpt wel het verschil tussen Event macro's, Subs en Functions? En waar deze thuis horen?
 
Niet echt, daarom vraag ik om hulp.
Wil dit oplossen voor een collegae.
Ben geen super held in excel.
 
Ok. Event (Gebeurtenis) macro's zijn erg belangrijk bij de vragen die je hebt voorgelegd. Als je het verschil tussen "gewone" macro's en event macro's niet kent dan ga je ook de antwoorden en voorbeelden die je al gekregen hebt niet goed begrijpen en heeft het weinig zin je van voorbeelden te voorzien.

Zo zijn we uiteraard allemaal eens begonnen met VBA en hebben er lessen voor gevolgt. Een basisbegrip van de genoemde zaken is erg belangrijk en er vanuit gaande dat je Excel zelf wel kent, verwijs ik je naar een online basis cursus voor het maken van event macro's:
http://www.wiseowl.co.uk/blog/s194/event-handling-vba.htm

Als je dat wilt gaan doen en je loopt tijdens het volgen ervan tegen iets aan waar je echt niet uit komt dan kan je daarover best hier een vraag stellen.
 
Ik heb het idee dat ik niet geholpen mag worden.
Als je in mijn bestand wat voorbeeldjes wil plaatsen ga ik dat misschien best wel begrijpen.
In een voorbeeld zie ik iets staan en ga ik dat misschien best wel begrijpen.
Als je denk dat dat geen zin heeft zou ik dat jammer vinden.
Ben nu de hele avond al bezig met onderstaan: Vorderingen gaan gestaag.

Public LMRAing As Boolean
Public TRAing As Boolean
Public WVGnaTRA As Boolean
Public LMRAmelding As Boolean
Public TRAmoet As Boolean
Public TRAmelding As Boolean

Sub reset()
LMRAing = False
' kolommen a, b, w en c zijn ingevuld.
TRAing = False

WVGnaTRA = False
' Werkverunning kan ingevuld worden na dat TRA minimaal is ingevuld.
LMRAmelding = False
' minimaal een keer melding kolommen a, b, w en c invullen aangegeven
TRAmoet = False
' TRA moet ingevuld worden
TRAmelding = False
' minimaal een keer melding gele velden invullen

End Sub
 
Het gaat niet alleen om het kunnen lezen van VBA code maar ook om het begrip van wanneer een stuk code uitgevoerd dient te worden en welke events door Excel worden getriggert waarop gereageert kan worden. Het voorbeeld dat je nu laat zien doet niets anders dan variabelen een waarde geven. Daar komt totaal geen interactie met Excel in voor.
 
Omdat ik het idee heb dat niemand me wil helpen ga ik het op die manier proberen op te lossen.
Ik dacht dat als je een probleem hebt dat je hier een vraag kon stellen je je geholpen zou worden.
Maar nu heb ik blijkbaar een moeilijk probleem en moet ik het zelf proberen op te lossen zonder hulp.
Je moet al die bovenstaande begrippen kennen anders word je niet geholpen.
Als ik die begrippen voor 100% door had, had ik hier ook niet aangeklopt.
Toch allemaal bedankt voor jullie "hulp".
Heb nog het bestand toegevoegd die tot het invullen van de WVG vanuit de TRA volgens mij goed werkt.
Hier moet ik alleen de meldingen weg zien te krijgen die daar vanuit de TRA nog worden gegenereerd.
 

Bijlagen

  • Werkvergunning_Versie_270415testa.xlsb
    99,7 KB · Weergaven: 14
Wat je met dat document wil kan prima hoor. Je bent er uitgebreid over te woord gestaan op worksheet.nl en dat wordt hier uiteraard niet nog een keer herhaald. Jammer dat je je daardoor tekort gedaan voelt want er zijn zowel hier als op worksheet.nl genoeg mensen die je willen helpen.

In het document dat je plaatst gebeurt teveel met bladen die zichtbaar danwel onzichtbaar worden gemaakt. Je kent zelf de procesgang en de dataflow maar de mensen die je willen helpen kennen die niet. Tevens gebruik je afkortingen waar men niets mee kan waardoor het erg onduidelijk is waar nu wat op welk moment moet gebeuren. Gebruik in een uitleg van je probleem liever de bladnamen in plaats van die afkortingen.

Zoals op worksheet.nl al is geopperd, plaats een simpel document waarin je probleem duidelijk is en waarin men eenvoudig de oplossing ervoor kan aangeven. Deze oplossing(en) kan je dan, zoals je zelf zegt, zelf wel in het echte document verwerken.
 
Laatst bewerkt:
Om je terwille te zijn heb ik de 4 pagina's met berichten op worksheet.nl door gelezen, ondanks dat "crossposting" niet wordt gewaardeerd als dit niet wordt aangegeven. Volgens mij heb je al een eenvoudig document waarin je probleem duidelijk is, geplaatst in #23 daar. Ik zal er eens naar kijken.

Edit:
Ik zou de gegevensvalidatie en de functies in "Kolom B" uit het blad LRMH-RBH verwijderen en het volgende achter dat werkblad zetten:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("F8:F12")) Is Nothing Then
        Exit Sub
    End If
    
    On Error GoTo Einde
    Select Case Target.Column
        Case 6
            Select Case Target.Value
                Case 0, 1, 2
                Case Else
                    MsgBox "Alleen 0, 1 of 2 invullen", vbExclamation, "FOUTIEVE INVOER"
                    Range(Target.Address).Activate
                    Exit Sub
            End Select
            
            Select Case Target.Row
                Case Is > 7, Is < 13
                    If Target.Value = 0 Then
                        Cells(Target.Row, 8) = 0
                    Else
                        Cells(Target.Row, 8).Activate
                    End If

                    If AllesGevuld Then
                        If LCase(Range("N16")) = "ja" Then
                            With Sheets("Taak Risico Analyse")
                                .Visible = True
                                .Activate
                            End With
                        Else
                            With Sheets("Werkvergunning")
                                .Visible = True
                                .Activate
                            End With
                        End If
                    End If
            End Select
    End Select
    Exit Sub

Einde:
    If Err.Number <> 13 Then
        MsgBox Err.Description
    End If
End Sub

Function AllesGevuld() As Boolean
    Dim x As Integer
    Dim y As Integer
    
    AllesGevuld = False
    For x = 6 To 8 Step 2
        For y = 8 To 12
            Select Case Trim(Cells(y, x))
                Case ""
                    Exit Function
            End Select
        Next y
    Next x
    AllesGevuld = True
End Function

De gegevens worden dan op juistheid gecontroleerd en als alles juist gevuld is wordt het juiste werkblad geopend.
Bij een onjuiste invoer wordt een melding gegeven en blijft de cursor in de betreffende cel.
Bij een 0 in "Kolom A" wordt automatisch een 0 in "Kolom B" geplaatst.
Bij een cijfer > 0 in "Kolom A" wordt tevens direct naar "Kolom B" gesprongen.

Aan de hand van deze voorbeeldcode kan je dan zelf wel de controles op de andere werkbladen inbouwen.
Alles wat je nodig hebt zit er in.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan