26. februar 2006 - 15:18Der 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.
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
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
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
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
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 :)
Det gør ikke spor.. fik jo "grundstenen" at arbejde udfra fra dig :)
Synes godt om
Ny brugerNybegynder
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.