Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[xl2k3] Opslaan blokkeren als velden openstaan

Pagina: 1
Acties:

  • sunturion
  • Registratie: December 2000
  • Laatst online: 28-11 15:33
Ik heb een klein probleem met Excel waar ik zelf niet hellemaal uit kom. Ik heb een excel sheet waar een aantal velden zitten die moeten worden ingevuld. Met conditional formatting heb ik ervoor gezorg dat als een bepaalde veld word ingevuld, een veld blauw oplicht (vb:D4). Deze moet vervolgens ook worden ingevuld. Het probleem is dat veel mensen vergeten de blauwe velden in te vullen.

Ik heb een kleine macro geschreven die ervoor zou moeten zorgen dat als de blauwe velden niet ingevuld zijn dat er dan een msg box moet verschijnen. Dit gebeurt echter niet.

code:
1
2
3
4
5
6
7
8
9
10
11
Sub error()

    If Cell("D4").Interior.Color = RGB(0, 255, 255) And Cell("D4") = "" Then
        MsgBox ("Please fill out the Blue highlighted cells.")

    ElseIf Cell("D6").Interior.Color = RGB(0, 255, 255) And Cell("D6") = "" Then
        MsgBox ("Please fill out the Blue highlighted cells.")

    End If
    
End Sub


Daarnaast zou ik eigenlijk willen dat mensen die excel sheet niet kunnen opslaan als de blauwe velden niet zijn ingevuld. Over een opbouw van zo'n dergelijke macro heb ik echter niks kunnen vinden.

Wie kan mij helpen

In the name of God, impure souls of the living dead shall be banished into eternal damnation. Amen.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

En hoe wordt die routine dan aangeroepen?

opslaan blokkeren -->workbook module:
Visual Basic:
1
2
3
4
5
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  'check op velden en dan
    MsgBox "Noway lutser"
    Cancel = True
End Sub


offtopic:
In office zijn Versietags in topictitel verplicht *lezen svp*. Let daar volgende keer even op, wil je?

[ Voor 21% gewijzigd door Lustucru op 12-09-2008 11:20 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • sunturion
  • Registratie: December 2000
  • Laatst online: 28-11 15:33
Lustucru schreef op vrijdag 12 september 2008 @ 11:19:
En hoe wordt die routine dan aangeroepen?
Ik schaam me diep. Was vergeten private voor sub error() te plaatsen. Hij hoort dus automatisch te starten. Ik heb nu staan als code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    If ActiveWorkbook.Range("D4").Interior.Color = RGB(0, 255, 255) And ActiveWorkbook.Range("D4") = "" Then
        MsgBox ("Please fill out the Blue highlighted cells.")
        Cancel = True
    
    ElseIf ActiveWorkbook.Range("D6").Interior.Color = RGB(0, 255, 255) And ActiveWorkbook.Range("D6") = "" Then
        MsgBox ("Please fill out the Blue highlighted cells.")
        Cancel = True
        
    End If
    
    
End Sub


Helaas werkt het nog steeds niet. Hij geeft geen melding
offtopic:
In office zijn Versietags in topictitel verplicht *lezen svp*. Let daar volgende keer even op, wil je?
offtopic:
Sorry was dit helelmaal vergeten. Zou jij de [EXCEL2003] even willen toevoegen. Bijvoorbaat dank

In the name of God, impure souls of the living dead shall be banished into eternal damnation. Amen.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

sunturion schreef op vrijdag 12 september 2008 @ 13:49:
[...]
Helaas werkt het nog steeds niet. Hij geeft geen melding
Ga je maar verder schamen. 'Ut doet ut niet' is taal voor blondjes ;)

Zet een breakpoint en controleer of de code uberhaupt wordt opgeroepen en of de if-condities correct worden geevalueerd. Zet een debug.print in je code bv
Visual Basic:
1
debug.print (ActiveWorkbook.Range("D4").Interior.Color = RGB(0, 255, 255) ) , ( ActiveWorkbook.Range("D4") = "") 

Krijg je keurig twee keer 'true'te zien? Nee: zie daar je probleem.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • sunturion
  • Registratie: December 2000
  • Laatst online: 28-11 15:33
Ik had om te testen ook een breakpoint toegevoegd, had ik mischien moeten vermelden. Maar hij doorloopt de code helemaal niet aka de code wordt niet aangeroepen. De toegevoegde debug regel geeft ook geen resultaat. Nog suggesties ?

[ Voor 3% gewijzigd door sunturion op 12-09-2008 15:11 ]

In the name of God, impure souls of the living dead shall be banished into eternal damnation. Amen.