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

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





Premium
Dansk iværksætter står bag et af Europas hurtigst voksende it-selskaber: Her er hele historien om hans op- og nedture
Det danske it-selskab Anytech365 leverer så høje vækstrater, at det er kommet med på Financial Times liste over de hurtigst voksende virksomheder i Europa. Her er historien om den danske iværksætter Janus Rægaard Nielsen, der har to konkurser bag sig og leder virksomheden fra Marbella.
Computerworld
Overblik: Så meget betaler danske virksomheder i løn til it-medarbejderne - se listerne her
Overblik: Der er meget stor forskel på løn-niveauet for it-medarbejderne i de danske virksomheder. Få overblikket over, hvor lønnen er højest og lavest her.
CIO
SAP's nye nordiske direktør: "De seneste uger har jeg besøgt en del kunder her i Norden - og alle talte om at vende tilbage til en eller anden form for standard."
Det store ryk til cloud brød med mange års it-konsolidering og skabte komplicerede it-miljøer. Men nu peger kundernes kompas den anden vej, fortæller erfaren SAP-boss efter nordisk rundrejse.
White paper
It-sikkerheden afhænger af dig!
Du kender det sikkert. En kollega vil dele en fil med navne, mailadresser og andre personlige data fra jeres Salesforce database, med en partner i EU. Vedkommende beslutter at smide en Excel-fil i DropBox og sender et link til partneren til download. En anden kollega skal bruge en kundes bankoplysninger for at kunne lave en overførsel, så kunden sender selvfølgelig en e-mail med alle bankoplysninger. Ovenstående er blot to eksempler på det, der sker flere gange dagligt. Nemlig tilfælde hvor der skal deles følsomme oplysninger, hvor der er meget dårlig datasikkerhed. Det er en konstant stressfaktor for de sikkerhedsansvarlige i it. Derfor er det en absolut nødvendighed, at have de rigtige værktøjer og teknologier, for at gøre samarbejdet med andre virksomheder, så smertefrit som muligt. Det kan du læse mere om, hvordan du opnår i dette white paper.