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

Controle uitvoeren vóór printen.

Status
Niet open voor verdere reacties.

RobYol

Gebruiker
Lid geworden
3 nov 2009
Berichten
63
Wie kan mij helpen?

Ik wil graag een controle laten uitvoeren voordat er daadwerkelijk geprint gaat worden. Dus wanneer er op de knop printen wordt gedrukt moet worden gecontroleerd of ALLE velden zijn ingevuld met de voorwaarde dat de datum van het datum veld moet liggen tussen vandaag en volgend jaar.



Alvast bedankt voor jullie hulp/reacties.

:thumb:
 

Bijlagen

Met volgende code zal dat wel lukken:

Code:
Sub PrintenBlad()

With Worksheets("Blad1").PageSetup
    .Zoom = False
    .FitToPagesTall = 1
    .FitToPagesWide = 1
End With
      Maxdatum = Format(Range("E6") + 365, "dd/mm/yyyy")
      Mindatum = Format(Date, "dd/mm/yyyy")
      Inputdatum = Format(Range("E6"), "dd/mm/yyyy")
    If Inputdatum < Mindatum Or Inputdatum > Maxdatum Then
       MsgBox ("Verkeerde datum ingevuld")
           [E6].Select
       Exit Sub
    End If
    
    If [E7] = "" Or [E8] = "" Or [E9] = "" Then
       MsgBox ("Een item is niet ingevuld!")
       Exit Sub
    End If
    
    Range("D6:E9").PrintOut Copies:=1, Preview:=True, Collate:=True
    
End Sub

Succes Cobbe
 
Dank je

Dank je Cobbe. Heb alleen nog een probleem. Als ik de datum 25-11-2008 invoer loopt hij gewoon door de controle terwijl dat eigenlijk niet mag? Zie ik iets over het hoofd?

In ieder geval bedankt voor de snelle reactie SUPER.



:thumb::thumb:
 
Als ik de datum 25-11-2008 invoer loopt hij gewoon door de controle terwijl dat eigenlijk niet mag? Zie ik iets over het hoofd?
In dit geval is het declareren van de variabelen wel belangrijk! Voeg deze regeltjes toe aan je sub...
Code:
Dim MaxDatum As Date
Dim MinDatum As Date
Dim InputDatum As Date
...en het werkt wel zoals je verwacht.

Groet, Leo
 
Leo, bedankt voor de tik op de vingers. :)
Declareren is belangrijk, zal het van nu wel proberen te doen.

Om een beetje goed te maken heb ik de code een beetje uitgreid zodat Rob deze zeker kan toepassen in zijn uitgebreider bestand :


Code:
Sub PrintenBlad()
Dim MaxDatum As Date
Dim MinDatum As Date
Dim InputDatum As Date
 Range("E6:E9").Interior.ColorIndex = xlNone
      MaxDatum = Format(Range("E6") + 365, "dd/mm/yyyy")
      MinDatum = Format(Date, "dd/mm/yyyy")
      InputDatum = Format(Range("E6"), "dd/mm/yyyy")
  If InputDatum < MinDatum Or InputDatum > MaxDatum Then
       MsgBox ("Verkeerde datum ingevuld")
           [E6].Interior.ColorIndex = 6
       Exit Sub
  End If
    
  If [E7] = "" Then
    MsgBox ("De naam is niet ingevuld!")
    [E7].Interior.ColorIndex = 6
    Exit Sub
  End If
    
  If [E8] = "" Then
    MsgBox ("De Leeftijd is niet ingevuld!")
    [E8].Interior.ColorIndex = 6
    Exit Sub
  End If
    
  If [E9] = "" Then
    MsgBox ("De Tijd is niet ingevuld!")
    [E9].Interior.ColorIndex = 6
    Exit Sub
  End If
    Range("D6:E9").PrintOut Copies:=1, Preview:=True, Collate:=True
End Sub


Succes, Cobbe
 
De omzetting van data naar tekst met format is overbodig.
Variabelen zijn overbodig; daarmee declareren ook.
Maak gebruik van de ingebouwde faciliteiten in Excel.

Code:
Sub PrintenBlad()
 on error resume next
 [E6:E9].Interior.ColorIndex = xlNone
 If [E6] < Date Or [E6] > DateAdd("y",1,Date) Then [E6].Clearcontents
 [E6:E9].Specialcells(xlcelltypeBlanks).interior.colorindex=6
 if err.number >0 then  [D6:E9].PrintOut Preview:=True
End Sub
 
Laatst bewerkt:
Cobbe bedankt hier gaan we even mee puzzelen in mijn offerte bestand.
Ik zie dat snb een alternatief geeft. Ik zal daar ook eens naar kijken maar voor mij is dit duidelijker. Als ik kijk op het forum zie ik dat er voor bepaalde handelingen ook functies geschreven kunnen worden. Zou dit ook gaan voor deze case. En dan bedoel ik een functie die controleert of iets is ingevuld en zonodig een melding geeft en het veld ook een kleur mee geeft.

In ieder geval weer bedankt.

:thumb::thumb::thumb::thumb::thumb:
 
Functies zijn er niet voor akties, maar voor berekeningen, waarvan het resultaat elders ingezet kan worden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan