Avatar billede micaud Mester
15. februar 2006 - 13:53 Der er 5 kommentarer og
1 løsning

Antal blanke i et område

Hej med jer.

Jeg vil gerne stille mig i en celle i et regneark, trykke på en knap og få en msgbox som fortæller mig, hvor mange blanke celler, der er i det aktuelle område. Jeg har forsøgt mig med currentregion, men kan ikke forbinde det med tæl.blanke og til sidst resultatet i en msgbox..... Kan I hjælpe ???
Avatar billede bak Forsker
15. februar 2006 - 17:06 #1
Sub Count_Blank()
  Dim rg1 As Range
  Set rg1 = ActiveCell.CurrentRegion
  MsgBox Application.Evaluate("COUNTBLANK(" & rg1.Address & ")")
End Sub
Avatar billede micaud Mester
16. februar 2006 - 10:33 #2
Jeg har et regneark med medarbejdere ud af vandret og uger ned lodret. Jeg vil gerne kunne stille mig i en vilkårlig celle i en vilkårlig uge, hvor jeg får antal blanke, så jeg kan se ledig tid i den pågældende uge, men vælg aktuelle område omfører sig mærkeligt, så kan man definere rangen udfra aktive celle, ligegyldigt hvilken celle jeg er i ??

Eks. vis: 

aktive celle H843 – tæl antal blanke i rangen E838:I847
aktive celle g840 – tæl antal blanke i rangen E838:I847
aktive celle f852 – tæl antal blanke i rangen E850:I859
osv…..

Håber du forstår !!!! :-)
Avatar billede micaud Mester
16. februar 2006 - 12:38 #3
Min VBA kode ser sådan ud:

Sub Count_Blank()
her = ActiveCell.Address
  Dim rg1 As Range
  Set rg1 = ActiveCell.CurrentRegion
  MsgBox "Der er " & Application.Evaluate("COUNTBLANK(" & rg1.Address & ")/2") & " ledige dage!"
ActiveCell.CurrentRegion.Select
Selection.SpecialCells(xlCellTypeBlanks).Select
    With Selection.Interior
        .ColorIndex = 3
        .Pattern = xlSolid
    End With
Application.Wait (Now + TimeValue("0:00:04"))
Selection.Interior.ColorIndex = xlNone
End If
Range(her).Select
End Sub

Der er 2 problemer med ovenstående, som beskrevet udvælges det aktuelle område ikke altid rigtig (se ovenfor) og de tomme celler skal markeres med rødt i 4 sekunder, hvorefter de skal gå tilbage til den farve de havde før markeringen. I min kode 0-stilles alle farver, hvilket går ud over ferierne, som er markeret med gul og søndage med blåt. Kan man vælge rød farve i de tomme felter i 4 sekunder og derefter vælge fortryd via VBA ?? Hvordan ??
Avatar billede bak Forsker
16. februar 2006 - 15:41 #4
For ikke at ødelægge din farvelægning, bruger denne betinget formatering istedet.
Håber så ikke at du bruger det i forvejen.
Mht. dit spm 10:33:52 bliver jeg nok nødt til at se arket, for at finde din systematik.

Sub Count_Blank()
Dim rg1 As Range
  Set rg1 = ActiveCell.CurrentRegion
  MsgBox "Der er " & Application.Evaluate("COUNTBLANK(" & rg1.Address & ")/2") & " ledige dage!"
  rg1.FormatConditions.Delete
  rg1.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
                            Formula1:="="""""
  rg1.FormatConditions(1).Interior.ColorIndex = 3
  Application.Wait (Now + TimeValue("0:00:04"))
  rg1.FormatConditions.Delete
End Sub
Avatar billede micaud Mester
16. februar 2006 - 19:47 #5
Jeg bruger alle 3 betingede formateringer i forvejen.... ville gerne have flere kan man det ??

Jeg har faktisk i stedet brugt mønstre (pattern) istedet, da jeg bruger mange farver men ingen mønstre, så dem kan jeg godt slette igen.

Mht. aktuelle område, så markeres hele regnearkets tomme celler, hvilket ikke er meningen, da det kun skulle være inden for en uge, men jeg har sat en if-sætning ind, så hvis tomme celler er mindre end 2, så laver den ikke mønstre.

Men BAK tusind tak for hjælpen, det er ikke først gang, og jeg tror jeg taler for mange VBA programmører i Excel, du er en kæmpe hjælp med alle de svar du har givet herinde.... så tak for det og send lige et svar, så jeg kan give point....

VBA ser sådan ud:

Sub Count_Blank()
her = ActiveCell.Address
  Dim rg1 As Range
  Set rg1 = ActiveCell.CurrentRegion
If Application.Evaluate("COUNTBLANK(" & rg1.Address & ")/2") > 1 Then
ActiveCell.CurrentRegion.Select
Selection.SpecialCells(xlCellTypeBlanks).Select
    With Selection.Interior
        .Pattern = xlSemiGray75
        .PatternColorIndex = 3
    End With
MsgBox "Der er " & Application.Evaluate("COUNTBLANK(" & rg1.Address & ")/2") & " ledige dage i valgte periode!"
Application.Wait (Now + TimeValue("0:00:01"))
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
    End With
Else
Application.ScreenUpdating = False
MsgBox "Kun én celle markeres. Prøv igen fra en anden celle (evt. ugenr.)!"
Application.ScreenUpdating = True
End If
Range(her).Select
End Sub
Avatar billede bak Forsker
16. februar 2006 - 20:11 #6
Tak for rosen :-)
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
Kurser inden for grundlæggende programmering

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