Avatar billede thonis Nybegynder
23. januar 2007 - 14:31 Der er 20 kommentarer og
1 løsning

brugerdefineret formatering

Jeg har lavet en brugerdefineret formatering som ser ud som følger:

#.##0 "minutes"

Når der kun står, f.eks. 1 eller mindre så står der stadig 1 minutes. Kan det lade sig gøre at hvis der står 1 eller mindre så er formatering "minute" og ikke minutes
Avatar billede supertekst Ekspert
23. januar 2007 - 14:58 #1
Hvis "minutes / minute" må anføres i separat celle - så er dette måske en mulighed:
=HVIS(A1>1;"minutes";"minute")
Avatar billede thonis Nybegynder
23. januar 2007 - 15:01 #2
Nej, det skal være så man kan indtaste i cellen med formateringen.
Avatar billede supertekst Ekspert
23. januar 2007 - 15:48 #3
Så skal der nok anvendes en stump VBA-kode
Avatar billede thonis Nybegynder
23. januar 2007 - 15:49 #4
Kan du lave den, er ikke god til VBA
Avatar billede supertekst Ekspert
23. januar 2007 - 16:10 #5
rem Indlægges i VBA (Alt+F11) i Ark1
Private Sub worksheet_change(ByVal Target As Excel.Range)
    kol = Target.Column
    ræk = Target.Row
   
    If kol = 1 And Target.Value <> "" Then                  'hvis der indtastes i kolonne A=1
        Target.Select
        If Target.Value > 1 Then
                Selection.NumberFormat = "#.##0 ""minutes"""
        Else
                Selection.NumberFormat = "#.##0 ""minute"""
        End If
    End If
End Sub
Avatar billede thonis Nybegynder
24. januar 2007 - 08:08 #6
Kan det ikke laves, så det kun gælder for cellerne C20 og F20. Jeg har nemlig nogle lignende formateringer andre steder i arket, f.eks. Day og days, og time og times.
Avatar billede supertekst Ekspert
24. januar 2007 - 09:30 #7
Jo - det vender jeg tilbage med..
Avatar billede supertekst Ekspert
24. januar 2007 - 09:37 #8
Private Sub worksheet_change(ByVal Target As Excel.Range)
    If Target.Address = "$C$20" Or Target.Address = "$F$20" And Target.Value <> "" Then                  'hvis der indtastes i kolonne A=1
        Target.Select
        If Target.Value > 1 Then
                Selection.NumberFormat = "#.##0 ""minutes"""
        Else
                Selection.NumberFormat = "#.##0 ""minute"""
        End If
    End If
End Sub
Avatar billede thonis Nybegynder
24. januar 2007 - 10:04 #9
Når jeg indtaster noget i f.eks. C20 kommer den med en run-time error '1004' Kan ikke angive egenskaben NumberFormat for klassen Range.
Når jeg går ind i Visual Basic er denne række markeret med gul:

Selection.NumberFormat = "#.##0 ""minutes"""
Avatar billede supertekst Ekspert
24. januar 2007 - 10:21 #10
Hm - vender tilbage...
Avatar billede thonis Nybegynder
24. januar 2007 - 10:42 #11
Ved godt hvad der gik galt, havde glemt at fjerne den oprindelige formatering. Jeg vil gerne bare lige vide hvordan man får tallene med 0 decimaler.
Avatar billede thonis Nybegynder
24. januar 2007 - 10:43 #12
Når jeg skal lave det samme med days og day, kan jeg vel bare rette lidt i koden, og sætte den i under den første.
Avatar billede supertekst Ekspert
24. januar 2007 - 13:32 #13
1) Erstat #.##0 med #.000
2) Ja, prøv - ellers giv signal
Avatar billede thonis Nybegynder
24. januar 2007 - 13:52 #14
Skal man ikke bare ændre det til ###, så er der ingen decimaler. Ville gerne have at hvis der står 0, at der så også står 0 minutes. Altså det er kun når der står 1, at der skal stå minutter.

Jeg har også et problem med en runtime error '13' Type mismatch. Det er fordi jeg har lavet en makro til at nulstille nogle celler i arket med. Og når jeg så nulstiller kommer den op med runtime error. Linien som det er galt med er denne:

If Target.Address = "$C$20" Or Target.Address = "$F$20" And Target.Value <> "" Then                  'hvis der indtastes i kolonne A=1

Jeg vil gerne have at der bare står 0 minutes, når jeg nulstiller, hvis det kan lade sig gøre.
Avatar billede thonis Nybegynder
24. januar 2007 - 13:53 #15
Sorru, det var noget vrøvl.

Altså det er kun når der står 1, at der skal stå minute.
Avatar billede supertekst Ekspert
25. januar 2007 - 09:37 #16
Prøv at se på denne version:

Private Sub worksheet_change(ByVal Target As Excel.Range)
Rem er celle-adressen præcis?
    If Target.Address = "$C$20" Or Target.Address = "$F$20" Then
        If Target.Value <> "" Then
            Target.Select
            If Target.Value > 1 Then
                    Selection.NumberFormat = "#### ""minutes"""
            Else
                    Selection.NumberFormat = "#### ""minute"""
            End If
        Else
            Target.Value = 0
            Selection.NumberFormat = "0 ""minutes"""
        End If
    End If
End Sub
Avatar billede thonis Nybegynder
25. januar 2007 - 10:44 #17
Den kan got skelne mellem 1 og andre tal, men når man taster 0, står der bare minute. Også selvom der inde i VBA står minutes.

Desuden virker den heller ikke, når arket er låst, som jeg gerne vil have det er.
25. januar 2007 - 10:50 #18
Ret denne linie:
If Target.Value > 1 Then

til:
If Target.Value = 1 Then
Avatar billede thonis Nybegynder
25. januar 2007 - 11:09 #19
Når jeg retter linien til det som du foreslår, kommer der til at stå f.eks. 2 minute og 1 minutes og når man taster 0 står der kun "minute" uden et 0 foran.
25. januar 2007 - 11:16 #20
Flyt "s" ned i nederste linie.

          If Target.Value = 1 Then
                    Selection.NumberFormat = "#### ""minute"""
            Else
                    Selection.NumberFormat = "#### ""minutes"""
            Endif
Avatar billede thonis Nybegynder
25. januar 2007 - 11:37 #21
Har dog stadig problemer med 0, der står der kun minutes. Og så kommer den op med runtime-error 1004, når arket er låst. Jeg vil gerne have at man også kan rette i disse celler selovm arket er låst.
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