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

Melding op gezette tijden

Status
Niet open voor verdere reacties.

Gerard2348

Gebruiker
Lid geworden
24 okt 2013
Berichten
370
Best helpers,

Via onderstaande macro komt er een melding in het scherm dmv een MsgBox op gezette tijden. Als er voor nee gekozen wordt dan moet de melding bij een verandering in de sheet wederom verschijnen. Wordt er voor Yes gekozen dan moet de melding niet meer verschijnen. Welke toevoeging moet ik in de macro hebben om dit te bewerkstelligen?

Als in het voorbeeld de gegevens tussen 12:00 en 13:00 veranderen moet de melding iedere keer verschijnen wanneer er voor No gekozen wordt maar niet meer wanneer er voor Yes is gekozen. Echte de melding moet dan weer actief worden tussen 14:00 en 15:00 uur enz.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 tekst = "Het is Tijd om de de gegevens op te halen"
  
  If Time > TimeValue("12:00:00") And Time < TimeValue("13:00:00") _
  Or Time > TimeValue("14:00:00") And Time < TimeValue("15:00:00") _
  Or Time > TimeValue("16:00:00") And Time < TimeValue("17:00:00") Then
   
   Answer = MsgBox(tekst, vbQuestion + vbYesNo, "Gegevens ophalen")
    
    If Answer = vbNo Then Exit Sub
    If Answer = vbYes Then
   
   End If
  End If
  
End Sub

Wie kan mij verder helpen.
 

Bijlagen

Daar had ik naar gekeken maar ik heb geen passende oplossing gevonden. Waarschijnlijk kijk ik er over heen. Het kan namelijk ook zijn dat de excel sheet na de genoemde begin tijden wordt geopend.
 
En de gegevens ophalen bij het openen van het document is geen optie?
 
De melding Gegevens ophalen is een voorbeeld. De melding die moet komen is een reminder voor de gebruiker.
 
Dan kan je dat in de Workbook_Open controleren en vervolgens die timer starten.
 
Ha Edmoor,

Misschien is mijn vraagstelling niet duidelijk. Veronderstel dat in mijn voorbeeld de sheet om 12:16 wordt geopend en om 12:30 is er pas een wijziging dan moet de melding 1 keer worden getoond. Wanneer er na de melding op Yes wordt gedrukt dan moet de melding binnen de voorgestelde tijd niet meer in beeld komen. Wanneer het tweede tijdblok (14:00 tot 15:) komt en er is een wijziging binnen dit tijdbestek dan moet de melding bij wijzigen wederom worden getoond. Dit geldt ook voor het derde blok.

Ik zou niet weten hoe ik dat via jouw voorstel in #6 zou moeten realiseren.
 
Hoe je dat proces helemaal in elkaar moet zetten kan ik zo niks over zeggen maar je kan uiteraard met globale variabelen bepalen of een melding moet worden gegeven.
Als het na een wijziging ergens in het document kan je dat het beste in de Workbook_SheetChange doen, of controleren op de boolean ThisWorkbook.Saved
 
Ha edmoor,
Dat is duidelijk dat er een variabele in de module moet komen. Maar hoe moet ik dat doen

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 tekst = "Het is Tijd om de de gegevens op te halen"
  
  If Time > TimeValue("12:00:00") And Time < TimeValue("13:00:00") _
  Or Time > TimeValue("14:00:00") And Time < TimeValue("15:00:00") _
  Or Time > TimeValue("16:00:00") And Time < TimeValue("17:00:00") Then
   
   Answer = MsgBox(tekst, vbQuestion + vbYesNo, "Gegevens ophalen")
    
    If Answer = vbNo Then Exit Sub
    If Answer = vbYes Then
    [COLOR="#FF0000"]xxxxxxxx[/COLOR]
   
   End If
  End If
  
End Sub

Waarschijnlijk op de plek van de rode xxxxxxxx
 
Als je alleen daar controleert kan je volstaan met een Static variabele.
 
ik heb wegens tijdsgebrek nog niet kunnen testen, maar dit zou al in de richting moeten gaan.
Kan je alvast beginnen te stoeien.
 

Bijlagen

Ha Cow18,

Ik heb je code bekeken en het het ziet er ingewikkeld uit. Bij opening krijg ik een foutmelding. Ga er straks verder mee stoeien.
 
bon, foutje van mijn kant, als je niet hard genoeg nadenkt.
tweede poging
die waarden in A1:B5 die mag je ergens anders in je werkblad plaatsen, zodat je er geen last van hebt, desnoods op een 2e tabblad, maar dat mag je enkel doen met knippen en plakken, dus niet kopieëren en plakken, want het werkt met gedefinieerde namen.
 

Bijlagen

Ha Cow18,
Als je niet genoeg nadenkt??? :shocked:
Volgens mij heb je hartstikke genoeg nagedacht. :D.
Ga deze uitvoerig testen. mijn hartelijke dank voor jouw bijdrage.
 
Heb het even getest. Ga kijken of ik de tijden makkelijk kan aanpassen. heb wel een kleine verandering aangebracht in de module

Code:
[Private Sub Worksheet_Change(ByVal Target As Range)
 
 If WorksheetFunction.Median([Startperiode], [Stopperiode], Now) = Now Then 'huidig tijdstip tussen bepaalde uren
     Application.EnableEvents = False
    If Not [AnderePeriode] Then    'nog niets veranderd in die periode
        [AnderePeriode] = True 'dan is er nu iets veranderd
        [Antwoord] = MsgBox(tekst, vbQuestion + vbYesNo, "Voor de 1e keer vragen Gegevens ophalen") 'de 1e keer die vraag stellen
    Else 'er was al iets veranderd tussen bepaalde uren = vraag herhalen
        [COLOR="#FF0000"]If [Antwoord] = vbNo Then 'nog steeds ja geantwoord[/COLOR]
            [Antwoord] = MsgBox(tekst, vbQuestion + vbYesNo, "voor de zoveelste keer herhaling Gegevens ophalen") 'bij iedere verandering opnieuw vragen
        End If
    End If
     Application.EnableEvents = True
  End If
End Sub

Hier stond
Code:
[COLOR="#FF0000"]If [Antwoord] = vbYes Then 'nog steeds ja geantwoord[/COLOR]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan