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

Rij zoeken als de cel leeg is stoppen

Status
Niet open voor verdere reacties.

Bertus78

Gebruiker
Lid geworden
17 aug 2017
Berichten
209
Wie kan en wil mij even helpen met het volgende.
Er zit een fout in de zin
Code:
If Not IsError(gev) Then .Cells(gev, 16) =  If IsEmpty(cell) Then MsgBox " al uitgezet in 1e lijn": Exit Sub

Wat wil ik:
invoer sheet"koffieautomaten cel B5
Zoeken in sheet koffieautomaten.
bekijken cel P (gev, 16), als die leeg is stoppen, als er wat staat doorgaan.

Code:
With Sheets("koffieautomaten")
 gev = Application.Match(Sheets("storing melden").Range("B5"), .Columns(1), 0)
  If Not IsError(gev) Then .Cells(gev, 16) =  If IsEmpty(cell) Then MsgBox " al uitgezet in 1e lijn": Exit Sub
 Exit For
 End If
 Next

#msexcel 2010
#beginner
 
Beter is om een voorbeeldbestandje mee te sturen ontdaan van gevoelige informatie.
maar als ik enkel naar de code kijk zie ik:
1. 2x If en 1 x End If.
2) een Exit For zonder ergens te zijn gestart met een For

Mogelijk heb je slechts een deel van de code gepost?!
Code:
With Sheets("koffieautomaten")
 gev = Application.Match(Sheets("storing melden").Range("B5"), .Columns(1), 0)
  [COLOR="#FF0000"]If[/COLOR] Not IsError(gev) Then .Cells(gev, 16) =  [COLOR="#FF0000"]If[/COLOR] IsEmpty(cell) Then MsgBox " al uitgezet in 1e lijn": Exit Sub
 [COLOR="#FF0000"]Exit For[/COLOR]
[COLOR="#FF0000"] End If[/COLOR]
 Next
 
Ik heb die extra "if" weggehaald.
Maar er zit nog een fout in.
Ik wil dat hij controleert of een cel leeg is, zo ja dan moet hij stoppen.

Code:
'controle of velden zijn ingevuld
 For Each cell In Range("b5")
 If IsEmpty(cell) Then
 MsgBox "Vul alle gele velden in A.U.B.": Exit Sub
 Exit For
 End If
 Next
'==========================================

With Sheets("koffieautomaten")
 gev = Application.Match(Sheets("storing melden").Range("B5"), .Columns(1), 0)
  If Not IsError(gev) Then .Cells(gev, 16) = IsEmpty(cell) Then MsgBox "Koffie automaat is al uitgezet in 1e lijn": Exit Sub
 Exit For
 End If
Next
  
End With

Sheets("storing melden").Select
 
'===========================================
'controle of velden zijn ingevuld
 For Each cell In Range("b13")
 If IsEmpty(cell) Then
 MsgBox "Vul in wie de melder is A.U.B.": Exit Sub
 Exit For
 End If
 Next
 
Bertus,

Wat is de foutmelding
Bovendien staat er nog altijd ten onrechte Exit FOR

waarom post je geen bijlage?
 
Er zit wel meer als 1 fout in, maar nogmaals:
Beter is om een voorbeeldbestandje mee te sturen ontdaan van gevoelige informatie.
 
Bekijk bijlage Koffieautomaat storing in werken - kopie.xlsm

Als je iets in alle gele vlakken zet en dan op "uitzetten 1e lijn" druk dan zie je wat ik bedoel.
Het is de bedoeling dat je eerst 1e lijn moet doen (dus niet direct naar tweede lijn).
Nu kan je een automaat direct uitzetten naar de tweede lijn en dat mag niet.
verder als die al is uitgezet naar de 1e lijn, mag je die niet nogmaals uitzetten naar de 1e lijn.
Dat wilde ik oplossen door een X achter de betreffende koffieautomaat te zetten.

#beginner
#msexcel 2010
 
Oei. De hele code barst van onnodige commando's.

Maar gekeken naar het eerste stuk hierbij wat aanpassingen, waarna je geen foutmeldingen meer krijgt:
Code:
[COLOR="#008000"]'controle of velden zijn ingevuld[/COLOR] [COLOR="#FF0000"](ingekort)[/COLOR]
If IsEmpty(Range("b5")) Then
    MsgBox "Vul alle gele velden in A.U.B.": Exit Sub
End If
'==========================================
With Sheets("koffieautomaten") [COLOR="#FF0000"]'aangepast[/COLOR]
    gev = Application.Match(Sheets("storing melden").Range("B5"), .Columns(1), 0)
    If Not IsError(gev) Then
        If .Cells(gev, 16) = IsEmpty(cell) Then
            MsgBox "Koffie automaat is al uitgezet in 1e lijn": Exit Sub
        End If
    End If
End With
'===========================================
[COLOR="#008000"]'controle of velden zijn ingevuld[/COLOR] [COLOR="#FF0000"](ingekort)[/COLOR]
If IsEmpty(Range("b13")) Then
    MsgBox "Vul in wie de melder is A.U.B.": Exit Sub
End If
[COLOR="#008000"]'controle of velden zijn ingevuld[/COLOR] [COLOR="#FF0000"](ingekort)[/COLOR]
If IsEmpty(Range("a16")) Then
    MsgBox "Omschrijving van automaatstoring ontbreekt.": Exit Sub
End If
[COLOR="#008000"]'controle of velden zijn ingevuld[/COLOR] [COLOR="#FF0000"](ingekort)[/COLOR]
If IsEmpty(Range("B22")) Then
    MsgBox "Aan wie heeft u de storing uitgezet ontbreekt": Exit Sub
End If
 
Ja sorry, ben nog beginner.

Maar hij schiet er door.
Als ik een X in betreffende vak zet gebeurt er niets, ook als ik wel een X in betreffende vak zet.

Code:
'controle of velden zijn ingevuld
 For Each cell In Range("b5")
 If IsEmpty(cell) Then
 MsgBox "Vul alle gele velden in A.U.B.": Exit Sub
 Exit For
 End If
 Next
'==========================================

'controle af hij niet is uitgegeven
With Sheets("koffieautomaten")
    gev = Application.Match(Sheets("storing melden").Range("B5"), .Columns(1), 0)
    If Not IsError(gev) Then
        If .Cells(gev, 16) = IsEmpty(cell) Then
            MsgBox "Koffie automaat is al uitgezet in 1e lijn": Exit Sub
        End If
    End If
End With


Sheets("storing melden").Select
 
'===========================================
'controle of velden zijn ingevuld
 For Each cell In Range("b13")
 If IsEmpty(cell) Then
 MsgBox "Vul in wie de melder is A.U.B.": Exit Sub
 Exit For
 End If
 Next
De melding dat Koffie automaat is al uitgezet in 1e lijn wordt en beide gevallen niet weergegeven.
 
En verder is het raadzaam om de hele code eens door te lopen en alle select, selections eruit te halen om de code beter leesbaar te maken!
Bijvoorbeeld:
Code:
[COLOR="#008000"]'Selecteer storing nummer voor database lijn 1[/COLOR]
[COLOR="#0000FF"]    Sheets("Info Blad").Select
    Range("C55").Select
    Selection.Copy[/COLOR]
[COLOR="#008000"]'selecteer de database[/COLOR]
    Sheets("totaal overzicht").Select
[COLOR="#008000"]'Zoek de laatste rij in de database voor storringnummer type en plak het gegeven in Kolom A[/COLOR]
    Range("a65536").End(xlUp).Select
    ActiveCell.Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlPasteValues[
Kan worden:
Code:
[COLOR="#008000"]'Kopieer storing nummer voor database lijn 1 en plak het gegeven in de laatste rij
'van database voor storringnummer type van Kolom A[/COLOR]
    [COLOR="#0000FF"]Sheets("Info Blad").Range("C55").Copy[/COLOR] Sheets("totaal overzicht").Range("a65536").End(xlUp).Offset(1, 0)
 
Laatst bewerkt:
O dat is een goede tip. dit ga ik doen als het programma klaar is om dan op te ruimen.
 
vervang deze regel:
Code:
If .Cells(gev, 16) = IsEmpty(cell) Then
door:
Code:
If .Cells(gev, 16) = "X" Then
Wat gebeurd er dan?
 
Ja bedankt, dit is wat ik wilde, nu kan ik ermee verder.

Nogmaals bedankt en een fijne weekend gewenst

:thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan