24. oktober 2006 - 21:30Der er
5 kommentarer og 1 løsning
Excel - undersøge et felt af gangen
Hej Eksperter
Er newbie i VB... Har fosøgt at få en makro til at undersøge om en given celle (Eller række af celler)i Excel er markeret gul. det lykkedes mig med følgende kode:
If Selection.Interior.ColorIndex = 6 Then MsgBox "Gul er taget" End End If
Selection.Select With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid End With
Men hvis nu kun 1 af de markerede celler er gul, og den anden ikke er det, markerer den begge (den ene var jo allerede gul) celler gule, frem for at meddele mig, at en af de markede celler er gule i forvejen. Hvad kan jeg gøre for at tvinge systemet til at undersøge alle celler i det markerede område?
Sub test() Dim Y As Range For Each Y In Selection Adresse = Y.Address If Range(Adresse).Interior.ColorIndex = 6 Then With Range(Adresse).Interior .ColorIndex = 6 .Pattern = xlSolid End With End If Next End Sub
Dim Y As Range For Each Y In Selection Adresse = Y.Address If Range(Adresse).Interior.ColorIndex = 6 Then MsgBox "FEJL" End Else With Range(Adresse).Interior .ColorIndex = 6 .Pattern = xlSolid End With End If Next
Fungerer som udgangspunkt fint, men kun hvis den "blanke" (ikke farvede) celle er til sidst i markeringen. Hvis den blanke celle er den første i markeringen, melder den godt nok fejlen, men cellen bliver stadig farvet gul.
Det jeg prøver at lave, er et bookingsystem, hvor excel skal undersøge om en given periode (eller specielt DELE af en given periode) er optaget. I givet fald skal der meldes en fejl til brugeren. Er tidsrummet (cellerne) ikke optagede (farvede) skal de farves (optages).
For Each Y In Selection Adresse = Y.Address If Range(Adresse).Interior.ColorIndex = 6 Then x = x + 1 End If Next
If x >= 1 Then MsgBox "TIDSRUMMET ER OPTAGET!!!" End Else For Each Y In Selection Adresse = Y.Address With Range(Adresse).Interior .ColorIndex = 6 .Pattern = xlSolid End With Next End If
Er måske lidt omstændigt med de 2 for-Next rutiner, men det virker...
Tusind tak for hjælpen - det var For EACH jeg manglede :-)
Sub test() Dim Y As Range For Each Y In Selection Adresse = Y.Address If Range(Adresse).Interior.ColorIndex = 6 Then MsgBox "FEJL" End End If Next With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid End With End Sub
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.