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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.