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

Copmpileerfout

Status
Niet open voor verdere reacties.

Hylas

Gebruiker
Lid geworden
5 mrt 2012
Berichten
150
Zit al een tijdje te klooien met het volgende probleem


Private Sub Worksheet_Change(ByVal Target As Range)
'invoeren van tijd in gehele getallen

On Error Resume Next
If Intersect(Target, Range("H1:H10000")) Is Nothing Then GoTo Einde
If IsEmpty(Target) Then GoTo Einde

If Hour(Target.Value) <> 0 Or Minute(Target.Value) <> 0 Then GoTo Einde
Application.EnableEvents = False
If Int(Target.Value / 100) < 0.1 Then
Target = "00:" & Target.Value
Else
Target = Int(Target.Value / 100) & ":" & Right(Target.Value, 2)
Dim rng As Range
End If

Einde:
ActiveSheet.Calculate

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
If Target.Count = 1 And Target.Column = 3 Then
Set rng = Target.Offset(0, -1)
If Len(Target) = 0 Then
rng.ClearContents
rng.Offset(0, -2).ClearContents
Else
If Len(rng) = 0 Then
rng = Date
rng.Offset(0, 5) = Date + 730
End If
End If

waarom krijg ik hier een compileer fout ? vraag ik te veel of doe ik iets niet goed

Groet, Ton Schermafbeelding 2015-11-30 om 20.12.11.jpg
 
Die naam moet uniek zijn en heb je er 2x in staan. Je mag dus per werkblad maar 1 Sub hebben die Worksheet_Change heet.
 
Je kunt geen 2 Worksheet_Change voor hetzelfde werkblad hebben.

Met vriendelijke groet,


Roncancio
 
Doe het dus op deze manier:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Voorwaarde
        Case VoorwaardeA:   Call Macro1(Target)
        Case VoorwaardeB:   Call Macro2(Target)
    End Select
End Sub

Private Sub Macro1(ByVal Target As Range)
    'Macro 1
End Sub

Private Sub Macro2(ByVal Target As Range)
    'Macro 2
End Sub

Tip m.b.t. je huidige code:
Vergeet in de eerste Sub niet om Application.EnableEvents weer op True te zetten.
En die laatste Dim opdracht is daar overbodig.
 
Laatst bewerkt:
Compileerfout

Heb hem er nu zo in staan maar werkt nog niet
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Voorwaarde
        Case VoorwaardeA:   Call macro1(Target)
        Case VoorwaardeB:   Call Macro2(Target)
    End Select
End Sub
 
Private Sub macro1(ByVal Target As Range)
    'Macro 1
    On Error Resume Next
    If Intersect(Target, Range("H1:H10000")) Is Nothing Then GoTo Einde
    If IsEmpty(Target) Then GoTo Einde
    If Hour(Target.Value) <> 0 Or Minute(Target.Value) <> 0 Then GoTo Einde
    Application.EnableEvents = True
    If Int(Target.Value / 100) < 0.1 Then
    Target = "00:" & Target.Value
    Else
    Target = Int(Target.Value / 100) & ":" & Right(Target.Value, 2)
    End If
   
Einde:
    ActiveSheet.Calculate
         
End Sub
 
Private Sub Macro2(ByVal Target As Range)
    'Macro 2
       Dim rng As Range
    If Target.Count = 1 And Target.Column = 4 Then
        Set rng = Target.Offset(0, -2)
        If Len(Target) = 0 Then
            rng.ClearContents
            rng.Offset(0, -2).ClearContents
        Else
            If Len(rng) = 0 Then
                rng = Date
                rng.Offset(0, 5) = Date + 730
            End If
        End If
    End If
End Sub
 
Laatst bewerkt:
Nee. Logisch. Dat voorbeeld moet je uiteraard wel aan je eigen situatie aanpassen.
 
Voordat je nog meer code gaat posten: zou je (liefst met terugwerkende kracht) je code willen opmaken met de CODE tags? Zet [/CODE] achter je code, en
Code:
[/B][/COLOR] er [B]voor[/B] en je maakt iedereen gelukkig :).
 
Nee. Logisch. Dat voorbeeld moet je uiteraard wel aan je eigen situatie aanpassen.

Misschien is dit wat kort door de bocht en heb je er gewoon wat extra hulp bij nodig.
Als je uitlegt welke macro op welk moment en onder welke voorwaarden zijn werk moet gaan doen wil ik het best voor je uitschrijven.
 
Edmoor, misschien zoek ik het wel te moeilijk, in macro 1 doet hij eigenlijk niets anders dan automatisch de dubbele punt maken zodat ik achterelkaar door typ en macro 2 moet hij als ik in C 10 bijv een getal in vul dan moet hij in A10 de huidige datum zetten en in G10 de datum + 2 jaar Bekijk bijlage voorbeeld.xlsm hoop dat je me een beetje op het goede pad kan zetten :D
 
Ok. Daar leg je maar gedeeltelijk de voorwaarden uit maar de macro's moeten dus hun werk doen op het moment dat de inhoud van een cel wijzigt. Het gaat er dus niet om wat ze doen maar wanneer ze geactiveerd moeten worden. De vraag is dus, voor welke cellen moet de eerste macro gaan lopen en voor welke cellen de tweede?
 
Iets om mee te starten.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Column
        Case 3
            If Target.Count = 1 Then
                If Len(Target) = 0 Then
                    Target.Offset(0, -2).ClearContents
                    Target.Offset(0, 4).ClearContents
                Else
                    If Target.Offset(0, -2) = 0 Then
                        Target.Offset(0, -2) = Date
                        Target.Offset(0, 4) = Date + 730
                    End If
                End If
            End If
        Case 8
            If IsEmpty(Target) Then GoTo Einde
            If Hour(Target.Value) <> 0 Or Minute(Target.Value) <> 0 Then GoTo Einde
            Application.EnableEvents = False
            If Int(Target.Value / 100) < 0.1 Then
                Target = "00:" & Target.Value
            Else
                Target = Int(Target.Value / 100) & ":" & Right(Target.Value, 2)
            End If
Einde:
            ActiveSheet.Calculate
            Application.EnableEvents = True
    End Select
End Sub
 
Edmoor,

Macro 2 moet dus het eerst uitgevoerd worden, ik geef een getal in, dan moet hij de datum van vandaag in cel A9 zetten en tevens de datum 2 jaar verder in cel G 9, hierna wil ik in cel H9 een tijd invoeren die ik van een verpakking heb, maar heb geen zin om dubbel punt te zetten dus dat heb ik zo in de code verwerkt. ik tik dus 2100 in en de code maakt er 21:00 van.

zie bijlage die ik in de vorig bericht heb meegestuurd
 
Zoals ik al zei is de vraag niet wat de macro's moeten doen, dat kan ik wel lezen, maar op welk moment ze moeten worden gestart. Macro 1 moet dus worden gestart als je wat in H9 hebt ingevoerd. Nu dus nog de vraag op welk moment macro 2 moet worden gestart.

Heb je al geprobeerd wat Warme bakkertje laaat zien?
 
Ga zo aan de slag, de 2e macro treed in werking als ik de tijd ingeef

Laat het je zo weten
 
Opgelost

Hey Bakkertje, hij werkt echt, goed man, ben d'r ontzettend blij mee.
Jongens hartstikke bedankt, ik kan er weer mee verder bestudeer de VBA tekst ook weer want ben er niet bekend of handig mee maar door voorbeeldjes en vragen kom ik steeds verder en verder.
Nogmaals bedankt !!!!!:d:d:d:d
 
Zoals ik al zei is de vraag niet wat de macro's moeten doen, dat kan ik wel lezen, maar op welk moment ze moeten worden gestart. Macro 1 moet dus worden gestart als je wat in H9 hebt ingevoerd. Nu dus nog de vraag op welk moment macro 2 moet worden gestart.

Heb je al geprobeerd wat Warme bakkertje laaat zien?

Thanks voor de hulp Edmoor, de vba formule van het bakkertje werkt Top!!!!!!!!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan