Avatar billede KingMedia Novice
26. februar 2006 - 15:18 Der er 8 kommentarer og
1 løsning

VBA: Gøre en if-then-else gentagelse kortere ?

Jeg har følgende kode, som tjekker op nogle felter imellem, men umiddelbart synes jeg den er for lang.

Kan det ikke lade sig gøre at gøre den mere dynamisk ?

--------------

    If Sheets("QF25").[M12].Text = "Ja" And IsEmpty(Sheets("QF25").[A12].Value) Then
        MsgBox "Du skal melde færdigvarer ind i UNIPLAN. Hvis """ & Sheets("QF25").[B12].Text & " - " & Sheets("QF25").[D12].Text & """ er meldt ind, markér det i feltet A12" & vbCrLf & "Hvis du ikke har mulighed for at melde det ind, markér A12 med et ""X"", og påsæt en gul mærkat på rapporten med grunden, og læg den på trykkontoret", 0 + 48, "Fejl i trykrapport!"
        Exit Sub
    End If

-----------------

Den gentager jeg på M14, M16, M18 ... osv op til 32

Altså hardcoder den samme som ovenfor bare til de andre felter.

Kan dette ikke gøres smartere ?

/Mads
Avatar billede supertekst Ekspert
26. februar 2006 - 18:19 #1
Jo, hvis M12 ikke udtrykkes absolut - enten med en forskydning - eller anvendelse af .cells(række,kolonne), der så ændres i et loop fra 12 - 32
Avatar billede KingMedia Novice
26. februar 2006 - 19:03 #2
Hmmmm nu er jeg ikke lige med her.

Kan du prøve at gi mig et eksempel ? :)
Avatar billede bak Forsker
26. februar 2006 - 20:47 #3
Dim x As Long
With Sheets("QF25")
  For x = 12 To 32 Step 2
      If .Range("M" & x).Text = "Ja" And IsEmpty(.Range("A" & x).Value) Then
        MsgBox "Du skal melde færdigvarer ind i UNIPLAN. Hvis """ & .Range("B" & x).Text & " - " & .Range("D" & x).Text & """ er meldt ind, markér det i feltet A12" & _
                vbCrLf & "Hvis du ikke har mulighed for at melde det ind, markér A12 med et ""X"", og  påsæt en gul mærkat på rapporten med grunden, og læg den på trykkontoret", 0 + 48, "Fejl i trykrapport!"
        Exit Sub
      End If
  Next
End With
Avatar billede excelent Ekspert
26. februar 2006 - 20:59 #4
Dim c As Range
For Each c In Range("m12:m32")
    If c.Value = "Ja" And IsEmpty(Sheets("QF25").[A12].Value) Then
        MsgBox "Du skal melde færdigvarer ind i UNIPLAN. Hvis """ & Sheets("QF25").[B12].Text & " - " & Sheets("QF25").[D12].Text & """ er meldt ind, markér det i feltet A12" & vbCrLf & "Hvis du ikke har mulighed for at melde det ind, markér A12 med et ""X"", og påsæt en gul mærkat på rapporten med grunden, og læg den på trykkontoret", 0 + 48, "Fejl i trykrapport!"
        'Exit Sub
    End If
Next
Avatar billede excelent Ekspert
26. februar 2006 - 21:02 #5
hovsa overså [A12].Value
så glem det :-)
Avatar billede excelent Ekspert
26. februar 2006 - 22:30 #6
Dim i
For i = 12 To 32 Step 2
  If Sheets("QF25").Range("M" & i).Text = "Ja" And IsEmpty(Sheets("QF25").Range("A" & i).Value) Then
        MsgBox "Du skal melde færdigvarer ind i UNIPLAN. Hvis " & Sheets("QF25").Range("B" & i).Text & " - " & Sheets("QF25").Range("D" & i).Text & " er meldt ind, markér det i feltet A" & i & vbCrLf & "Hvis du ikke har mulighed for at melde det ind, markér A" & i & " med et ""X"", og påsæt en gul mærkat på rapporten med grunden, og læg den på trykkontoret", 0 + 48, "Fejl i trykrapport!"
        'Exit Sub
    End If
Next
End Sub
Avatar billede KingMedia Novice
27. februar 2006 - 16:20 #7
Hej Bak..  tusind tak, det var jo lige det jeg skulle bruge. FIk selv lige tilføjet de to sidste "A12" som også skulle være dynamiske :)
Smid et svar :)
Avatar billede bak Forsker
27. februar 2006 - 16:29 #8
Åh ja, havde ikke lige set dem, da de var en del af teksten og ikke refererede til en celle :-)
Avatar billede KingMedia Novice
27. februar 2006 - 17:04 #9
Det gør ikke spor.. fik jo "grundstenen" at arbejde udfra fra dig :)
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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