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
It-fejl hos politiet kan have givet forkerte domme gennem syv år
Der er blevet opdaget en fejl i forbindelse med politiets behandling af teledata. Det kan have konsekvenser for domme, der er blevet afsagt i en syvårig periode.
Computerworld
Huawei klar med patent på sit nye mobil-styresystem i ni europæiske lande
Den kinesiske mobilproducent Huawei er nu klar til at patentere sit nye styresystem til sine telefoner i ni europæiske lande.
CIO
Beslutningsprocesser, der slår ihjel
Men de fleste af os lever i en virksomhedskultur, hvor ingen er blevet fyret for at vælge IBM - og ingen er blevet fyret for at igangsætte endnu en analyse. Og man kommer måske et stykke vej med analyse. Men man kommer i mål med handling.
Job & Karriere
"Vi var fem mennesker, der fik 400 millioner kroner, et lokale på 12 m2 og et stempel fra Undervisningsministeriet. Det kalder jeg mit første start-up. Det blev til IT-Universitetet. "
"Da jeg var færdig med PhD´en så var vi fem mennesker, der fik 400 millioner kroner, et lokale på 12 m2 og et stempel fra Undervisningsministeriet. Så skulle vi bare have et nyt universitet op og køre på seks måneder. Det kalder jeg mit første start-up. Det blev til IT-Universitetet."
White paper
Hvad er prisen for gammeldags netværk?
Netværk får mere og mere at lave. Derfor øges besværet og risiciene med traditionelle netværksenheder - ofte med forskellige proprietære regler og indstillinger. Alternativet er virtuelle netværk. I dem skal hardwaren bare udføre instruktioner fra et koordinerende program, der styres fra et centralt panel. I denne rapport fra VMware og Forrester beskrives de økonomiske aspekter ved at gå over til virtuelle netværk.