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

If .... Then...Else...else

Status
Niet open voor verdere reacties.

Gerald Baalhuis

Gebruiker
Lid geworden
14 jan 2006
Berichten
369
Hallo beste forum-leden,

In een excelbestand wordt in VBA gekeken wat de computernaam is.
Er zijn 3 werkplekken. Laten we zeggen PC-1, PC-2 en PC-3.
Afhankelijk van op welke werkplek gewerkt wordt dient bepaalde VBA code uitgevoerd worden.
Nu heb ik het wel zover dat als gewerkt wordt op PC-2 de macro goed loopt, maar zodra er op PC-3 gewerkt wordt loopt de macro door naar het einde van de macro.
Iemand enig idee?


gebruikte code:

Code:
Sub Start_macro()
Dim FindString As String
Dim Machine As String
Dim rng As Range
Dim Computernaam As String
'haal computernaam op
Computernaam = Environ("computername")
'BEPAAL WELKE WERKPLEK
'CS&P PC
If Computernaam = "PC-1" Then
        FindString = InputBox("Scan de barcode op het CVP", "CS&P", , 580, 6000)
        If Trim(FindString) <> "" Then
            With Sheets("scanlijst").Range("A:A")
                Set rng = .Find(What:=FindString, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
            If Not rng Is Nothing Then
                Application.Goto rng, True
                'BARCODE GEVONDEN
                Machine = InputBox("Naar welke machine?", "In productie", , 580, 6000)
                'rij kleuren met dagkleur t/m vloer op
                ActiveCell.Offset(, 1).Resize(, 13).Interior.ColorIndex = Choose(Weekday(Date, 2), 46, 10, 23, 27, 26, 18, 0)
                'gekozen machine invullen
                ActiveCell.Offset(, 8).Range("A1").Value = Machine
                'tijd invullen wanneer ingelezen
                ActiveCell.Offset(, 13).Range("A1").Value = Format(Now(), "hh:mm")
                'foutafhandeling als barcode niet gevonden
            Else
                MsgBox "Barcode niet gevonden, scan opnieuw"
            End If
            End With
        End If

'GDS PC
Else
    If Computernaam = "PC-2" Then
        FindString = InputBox("Scan de barcode op het CVP", "CS&P", , 580, 6000)
        If Trim(FindString) <> "" Then
            With Sheets("scanlijst").Range("A:A")
                Set rng = .Find(What:=FindString, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
            If Not rng Is Nothing Then
            Application.Goto rng, True
            'BARCODE GEVONDEN
            'GEPRODUCEERDE ZAKJES OPTELLEN BIJ TOTNUTOE
            totnutoe = ActiveCell.Offset(0, 11).Value
            Cells(5, 2).Value = Cells(5, 2).Value + totnutoe
            'GDS cel kleuren met dagkleur als batch klaar is
            ActiveCell.Offset(, 14).Resize(, 1).Interior.ColorIndex = Choose(Weekday(Date, 2), 46, 10, 23, 27, 26, 18, 0)
            'tijd invullen als batch klaar is bij GDS
            ActiveCell.Offset(, 14).Range("A1").Value = Format(Now(), "hh:mm")
            'foutafhandeling als barcode niet gevonden
            Else
                MsgBox "Barcode niet gevonden, scan opnieuw"
            End If
        End With
    'start emoticons
     If Range("c5") < Range("c7") Then
        ' behaald kleiner dan minimum
        ActiveSheet.Shapes(Groen).Visible = False   'groen
        ActiveSheet.Shapes(GEEL).Visible = False   'geel
        ActiveSheet.Shapes(Rood).Visible = True    'rood
    End If
    If (Range("c5") >= (Range("c7"))) And (Range("c5") < (Range("c6"))) Then
        'waarde tussen minimum en doel
        ActiveSheet.Shapes(Groen).Visible = False   'groen
        ActiveSheet.Shapes(GEEL).Visible = True    'geel
        ActiveSheet.Shapes(Rood).Visible = False   'rood
    End If
    If Range("c5") >= Range("c6") Then
'        ' behaald groter dan maximum
        ActiveSheet.Shapes(4).Visible = True   'groen
        ActiveSheet.Shapes(3).Visible = False  'geel
        ActiveSheet.Shapes(5).Visible = False  'rood
    End If
    'einde emoticons
    Else
        If Computernaam = "PC-3" Then
        FindString = InputBox("Scan de barcode op het CVP", "CS&P", , 580, 7500)
        If Trim(FindString) <> "" Then
            With Sheets("scanlijst").Range("A:A")
                Set rng = .Find(What:=FindString, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
            If Not rng Is Nothing Then
                Application.Goto rng, True
                'BARCODE GEVONDEN
                'cargo cel kleuren met dagkleur als batch in de bak zit
                ActiveCell.Offset(, 15).Resize(, 1).Interior.ColorIndex = Choose(Weekday(Date, 2), 46, 10, 23, 27, 26, 18, 0)
                'tijd invullen als batch klaar is bij Cargo
                ActiveCell.Offset(, 15).Range("A1").Value = Format(Now(), "hh:mm")
                'regel wegschrijven
                If ActiveCell.Offset(, 1).Value <> "" Then
                'ActiveCell.Offset(, -15).Select
                
                ActiveCell.Range("A1:P1").Select
                Selection.Cut
                Sheets("Eindcontrole").Select
                Selection.End(xlDown).Select
                Selection.End(xlUp).Select
                ActiveCell.Offset(1, 0).Range("A1").Select
                ActiveSheet.Paste
                ActiveCell.Offset(1, 0).Range("A1").Select
                ActiveSheet.Previous.Select
                ActiveCell.Rows("1:1").EntireRow.Select
                Selection.Delete Shift:=xlUp
                ActiveCell.Offset(-1, 0).Select
            End If
                
            Else
                MsgBox "Barcode niet gevonden, scan opnieuw"
            End If
            End With
        End If
End If
End If
End If
End If
End Sub
 
Je code ga ik niet uitzoeken, maar voor de juiste volgorde kan je dit doen:
Code:
Sub Start_macro()
    Select Case Environ("computername")
        Case "PC-1":    PC1
        Case "PC-2":    PC2
        Case "PC-3":    PC3
    End Select
End Sub

Sub PC1()
   [COLOR="#008000"]'Code voor PC-1[/COLOR]
End Sub

Sub PC2()
   [COLOR="#008000"]'Code voor PC-2[/COLOR]
End Sub

Sub PC3()
   [COLOR="#008000"]'Code voor PC-3[/COLOR]
End Sub
 
Laatst bewerkt:
Code:
If bla = juist then 'doe de regel eronder
  regel
 else 'anders
  deze regel
end if

Wat jij hebt is

Code:
if
 if
 if
else
end if
end if
end if

Of zoiets.

Als de eerste if = false dan ga je direct naar de laatste End if.

Maak gebruik van
Code:
Select Case computernaam
 case Pc-1
  doe dit
 case Pc-2
  doe dit
 case Pc-3
  doe dit
end select

Ps. @edmoor en ik zijn het wel eens met elkaar. :cool:
 
Laatst bewerkt:
Heren,

Allereerst bedankt voor jullie reacties.
Ik zat "vast" in de if-jes en borduurde daar te veel op voort, de "Case" constructie is veel makkelijker!

Groet en goed weekend!

Gerald
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan