Avatar billede ExcelJ95 Seniormester
19. marts 2019 - 15:06 Der er 5 kommentarer

VBA: Hvad gær jeg forkert? For variabel Next

Hej.

Jeg er ved at lave en skole opgave, hvor jeg skal benytte For og Next i VBA.

Med den kode jeg har skrevet nu, får jeg fejlmeddelelsen "Next without For"

Nogen der har et bud på hvorfor jeg får denne fejl? Kan simpelthen ikke se det..

PFT!


Sub checkItems()

Dim X As String
Dim Y As String
Dim Z As String
Dim W As String
Dim varenavn As Integer
Dim varelinjer As String

For varelinje = 15 To 24

varenavn = Range("d" & varelinje).Value

If varenavn <> "" Then
Z = InputBox("tilføj vareID")
Range("c" & varelinje).Value = Z
W = InputBox("tilføj udgifter")
Range("g" & varelinje).Value = W

If varenavn = "" Then
MsgBox "Advarsel: ikke på lager" & "vil du oprette?", vbYesNo
If Yes Then
X = InputBox("ny vare")
Range("d25").Value = X
Y = InputBox("costs")
Range("e25").Value = Y

If No Then
Exit Sub

End If

Next varelinje

End Sub
19. marts 2019 - 15:25 #1
Du mangler en masse    End If  sætninger og det giver den fejl...
Yes og No hedder også vbYes og vbNo
din varelinje variabel er heller defineret sikkert
Dim varelinje as integer
Din msgbox vil jeg også indlejre i din If sætningen - da du ikke gemmer svaret heraf i en variabel....

Sub checkItems()

Dim X As String
Dim Y As String
Dim Z As String
Dim W As String
Dim varenavn As Integer
Dim varelinjer As String
Dim varelinje As Integer

    For varelinje = 15 To 24
   
        varenavn = Range("d" & varelinje).Value
       
        If varenavn <> "" Then
            Z = InputBox("tilføj vareID")
            Range("c" & varelinje).Value = Z
            W = InputBox("tilføj udgifter")
            Range("g" & varelinje).Value = W
        End If
       
        If varenavn = "" Then
            If MsgBox("Advarsel: ikke på lager" & "vil du oprette?", vbYesNo) = vbYes Then
                X = InputBox("ny vare")
                Range("d25").Value = X
                Y = InputBox("costs")
                Range("e25").Value = Y
               
            ElseIf vbNo Then
                Exit Sub
               
            End If
        End If
    Next varelinje

End Sub
Avatar billede kim1a Ekspert
19. marts 2019 - 15:30 #2
Det er end if du mangler... jeg kan ikke lige lure om du ønsker at have dem alle samlet eller om det skal se sådan ud (utestet):

Sub checkItems()

Dim X As String
Dim Y As String
Dim Z As String
Dim W As String
Dim varenavn As Integer
Dim varelinjer As String
Dim svar As Boolean

For varelinje = 15 To 24

    varenavn = Range("d" & varelinje).Value
   
    If varenavn <> "" Then
        Z = InputBox("tilføj vareID")
        Range("c" & varelinje).Value = Z
        W = InputBox("tilføj udgifter")
        Range("g" & varelinje).Value = W
    Else
    svar = MsgBox("Advarsel: ikke på lager" & "vil du oprette?", vbYesNo)
   
        If svar = True Then
        X = InputBox("ny vare")
        Range("d25").Value = X
        Y = InputBox("costs")
        Range("e25").Value = Y
        Else
        Exit Sub
       
        End If
    End If
Next varelinje

End Sub
Avatar billede ExcelJ95 Seniormester
19. marts 2019 - 15:39 #3
Hmm.. i har måske begge ret..  Nu giver den mig bare  i stedet fejl i:
If varenavn <> "" Then

Her prøver jeg at sige, at hvis varenavn er forskellig fra ingenting så gør bla bla.

Har jeg skrevet det forkert op?
Avatar billede store-morten Ekspert
19. marts 2019 - 22:17 #4
Prøv:
Sub checkItems()

Dim X As String
Dim Y As String
Dim Z As String
Dim W As String
Dim Svar As Long
Dim varenavn As Variant
Dim varelinjer As String

For varelinje = 15 To 24

varenavn = Range("d" & varelinje).Value

'Er varenavn tom
If IsEmpty(varenavn) Then
    Svar = MsgBox("Ikke på lager" & vbCrLf & _
    "vil du oprette?", vbYesNo + vbQuestion, "Advarsel")
   
    If Svar = vbYes Then
    X = InputBox("ny vare")
    Range("D25").Value = X
   
    Y = InputBox("costs")
    Range("E25").Value = Y
    End If
   
    If Svar = vbNo Then Exit Sub
Else

'ellers, tilføj vareID og udgifter
    Z = InputBox("tilføj vareID")
    Range("C" & varelinje).Value = Z
    W = InputBox("tilføj udgifter")
    Range("G" & varelinje).Value = W
End If

Next varelinje

End Sub
Avatar billede kim1a Ekspert
20. marts 2019 - 06:46 #5
Åh ja, varenavn i din kan naturligvis ikke være en integer når det er indholdet af en celle.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





CIO
Sådan tager top-CIO Pernille Geneser livtag med 40 år gamle it-systemer i Stark Group med 10.000 medarbejdere