Als cel inhoud is "x" dan berichtbox

Status
Niet open voor verdere reacties.

getyours

Gebruiker
Lid geworden
4 sep 2007
Berichten
78
Beste,

Ik ben hier op het forum een code tegen gekomen welke een popup geeft als de opgeven range aan cellen een "x" of meerdere "xxxx" bevat.
Kan deze helaas niet meer vinden en kom er zelf niet uit.

Ik wil voorkomen dat er in een formulier op verschillende plekken een "x" of meerdere "xxxx" worden ingevuld.
tevens moeten de cellen waar een "x" of meerdere "xxxx" instaan een oranje kleur krijgen.

Heeft iemand een tip

Code:
For Each cell In Range("D10,D16,A32,E28,F28,G28,H28,I28,E29,F29,G29,H29,I29")
cell.Interior.ColorIndex = xlNone


If cell = "x" Then

cell.Interior.ColorIndex = 5

MsgBox "Controleer nogmaals of de juiste waarden zijn ingevuld":exit Sub

End If
Next
 
Je laat, net als velen trouwen,s de Sub en End Sub regel weg.
Dan is niet te zien door welk event die code moet gaan lopen.
 
Beste,
Ik wil voorkomen dat er in een formulier op verschillende plekken een "x" of meerdere "xxxx" worden ingevuld.
tevens moeten de cellen waar een "x" of meerdere "xxxx" instaan een oranje kleur krijgen.

Niet erg logisch toch?
Je wilt voorkomen dat er een of meerdere "x" worden ingevuld, maar ze moeten wel een kleur krijgen?
 
Ik zou mijn vraag ook anders kunnen formuleren.

Is het mogelijk een popup te genereren als er in het werkblad een x wordt ingevuld?

Wat betreft mijn eerste vraag macro wordt onderdeel van een bestaand macro welke controleerd of alle die ingevuld moeten worden
ook in gevuld zijn.

Code:
Sub Controle()

'Controleer of alle cellen zijn ingevuld zoniet vul deze als nog in
    
    For Each cell In Range("E1:E4,G5:G9,D10,D15,H15,D16,D21,H21,E28,F28,G28,H28,I28,E29,F29,G29,H29,I29,I30,A32,I33:I38,I40:I43,D45,F45")
 cell.Interior.ColorIndex = xlNone
  If IsEmpty(cell) Then
    i = 1
    cell.Interior.ColorIndex = 5
  End If
Next
If i > 0 Then MsgBox "Vul de blauw gekleurde cellen in": Exit Sub

'("D10,D16,A32,E28,F28,G28,H28,I28,E29,F29,G29,H29,I29")

For Each cell In Range("D10,D16,A32,E28,F28,G28,H28,I28,E29,F29,G29,H29,I29")
cell.Interior.ColorIndex = xlNone
If cell = "x" Then
MsgBox "Controleer of de juiste waarden zijn ingevuld": Exit Sub

End If
Next

End Sub
 
Laatst bewerkt:
Daarom wilde ik dus de header er bij hebben.
Het controleren van een cel bij het verlaten er van doe je in de Worksheet_Change.
Dan heb je ook de Sub die je plaatste waarschijnlijk niet meer nodig.

Daarnaast, als je de code die je plaatste schrijft zoals hier onder is het een stuk leesbaarder:
Code:
Sub Controle()
    [COLOR="#008000"]'Controleer of alle cellen zijn ingevuld zoniet vul deze alsnog in[/COLOR]
    rng1 = "E1:E4,G5:G9,D10,D15,H15,D16,D21,H21,E28,F28,G28,H28,I28,E29,F29,G29,H29,I29,I30,A32,I33:I38,I40:I43,D45,F45"
    rng2 = "D10,D16,A32,E28,F28,G28,H28,I28,E29,F29,G29,H29,I29"
    
    For Each cell In Range(rng1)
        cell.Interior.ColorIndex = xlNone
        If IsEmpty(cell) Then
            cell.Interior.ColorIndex = 5
            MsgBox "Vul de blauw gekleurde cel in"
            Exit Sub
        End If
    Next

    For Each cell In Range(rng2)
        cell.Interior.ColorIndex = xlNone
        If cell = "x" Then
            MsgBox "Controleer of de juiste waarden zijn ingevuld"
        End If
    Next
End Sub
 
Laatst bewerkt:
Code:
 For Each cell In Range(rng2)
        cell.Interior.ColorIndex = xlNone
        If cell = "x" Then
            MsgBox "Controleer of de juiste waarden zijn ingevuld"
        End If
    Next

Bovenstaande code wordt niet uit gevoerd, komt dit omdat ik de Worksheet_Change nog ergens moet plaatsen ?
 
Zoiets achter je werkblad. Mag je verder zelf aanvullen:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Address(0, 0)
        Case "A1"
            Target.Interior.ColorIndex = xlNone
            If Target.Value = "x" Then
                MsgBox "Controleer of de juiste waarden zijn ingevuld"
            End If
    End Select
End Sub
 
En toen was ik het spoor bijster. Codes knippen en plakken daar leer ik niet veel van.

Wat hebben onderstaande codes met elkaar te maken? De eerste code spreek voor zich maar die lijkt niet te werken.
Tweede code snap ik niet.

Code:
 For Each cell In Range(rng2)
        cell.Interior.ColorIndex = xlNone
        If cell = "x" Then
            MsgBox "Controleer of de juiste waarden zijn ingevuld"
        End If
    Next

met

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Address(0, 0)
        Case "A1"
            Target.Interior.ColorIndex = xlNone
            If Target.Value = "x" Then
                MsgBox "Controleer of de juiste waarden zijn ingevuld"
            End If
    End Select
End Sub
 
Het vergt nogal wat typewerk om alles uit te leggen. Daarvoor kan je beter een VBA boek aanschaffen.
Plaats een voorbeeld document, dan wordt het voor je gemaakt.
 
Onderstaande code doet in grote lijnen wat ik wil, Alleen zijn meerdere x of hoofdletters hiermee nog niet getackeld.

Code:
Sub Analyse_controle()

For Each cell In Range("E28,F28,G28,H28,I28,E29,F29,G29,H29,I29")
cell.Interior.ColorIndex = xlNone
 

If (cell) = "x" Then

i = 1
cell.Interior.ColorIndex = 46

MsgBox "Zijn alle analyses uitgevoerd"

End If

Next

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan