Avatar billede tariboventola Nybegynder
23. marts 2006 - 22:21 Der er 18 kommentarer og
1 løsning

Begrænsning af celleværdi

Hej

Hvad gør jeg, hvis jeg f.eks. ønsker at celleværdien i C1 KUN må være mellem 1 og 3. Hvis formlen i C1 returnere en højere værdi, skal der helst komme en advarsel frem el.lign. Nogen der kan hjælpe?
Avatar billede sjap Praktikant
23. marts 2006 - 22:49 #1
Prøv at se på funktionen Datavalidering (i menuen Data). Her kan du begrænse celleværdien som f.eks. "Helt tal" "mellem" 1 og 3.
Avatar billede tariboventola Nybegynder
23. marts 2006 - 22:58 #2
Det virker ikke umiddelbart, da datavalidering kun gælder for indtastning i selve cellen og ikke for returnerede værdier i cellen.

F.eks. hvis C1 har formlen =A1+A2 og C1 er datavalideret mellem 1 og 3, så kan man godt indtaste 4 og 5 i hhv. A1 og A2, så C1 giver 9 Uden, at der kommer en fejlmeddelelse frem
Avatar billede kabbak Professor
23. marts 2006 - 23:10 #3
Du kan ikke fange en formel via datavalidering, det kan du kun via makro.

sæt denne i ThisWorkbook modulet og ret ark og celle til det du bruger.

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If Sheets("Ark1").Range("A1").Value > 3 Then
MsgBox " A1 har overskredet værdien, Tast om"
End If
End Sub
Avatar billede sjap Praktikant
23. marts 2006 - 23:12 #4
OK. Jeg havde ikke lige fanget, at der er en formel i cellen.

Prøv at indsættes en makro i arkets eget kodemodul (højreklik på en arkfane og vælg "Vis programkoder"):

If Not Intersect(Target, Range("A1:B1")) Is Nothing Then
    If Range("C1") < 1 Or Range("C1") > 3 Then
        MsgBox "Det en om'er"
    End If
End If
Avatar billede sjap Praktikant
23. marts 2006 - 23:15 #5
Her får du lige HELE koden (og så må jeg vist hellere smutte i kanen!)


Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A1:B1")) Is Nothing Then
    If Range("C1") < 1 Or Range("C1") > 3 Then
        MsgBox "Det en om'er"
        Target.ClearContents
    End If
End If

End Sub
Avatar billede sjap Praktikant
23. marts 2006 - 23:16 #6
Og så kan jeg se at kabbak allerede har været der med et alternativt forslag - ja, øjnene må altså være blevet for små. ;0)
Avatar billede tariboventola Nybegynder
23. marts 2006 - 23:29 #7
Hej begge! Det virker udmærket - dvs. infoboksen kommer op - MEN kun når man markerer enten A1 eller B1. Celler A1 og B1 indeholder begge formler og deres værdier er således bestemt af andre celler. Hvorfor kommer der ikke en msgBox frem lige så snart, at C1's værdi går udenfor [1;3] ?
Avatar billede kabbak Professor
23. marts 2006 - 23:34 #8
Så lige at det var C1

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If Sheets("Ark1").Range("C1").Value > 3 or Sheets("Ark1").Range("C1").Value < 1 Then
MsgBox " C1 er udenfor værdiområdet, Tast om"
End If
End Sub

den tjekker når arket beregnes, så den er ikke bundet af nogle bestemte steder
Avatar billede tariboventola Nybegynder
23. marts 2006 - 23:41 #9
Hej, hm nu virker det slet ikke. Mit eksempel er blot forsimplet - i min virkelige problemstilling skriver jeg følgende:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If Sheets("Oversigt og input").Range("G7").Value > 7 Or Sheets("Oversigt og input").Range("G7").Value < 1 Then
MsgBox " G7 er udenfor værdiområdet, Tast om"
End If
End Sub

Mit excel-ark hedder "Oversigt og input" og det er cellen G7 der skal være mellem 1 og 7. Er der noget galt?
Avatar billede kabbak Professor
23. marts 2006 - 23:50 #10
Virker fint her, har du sat beregninger til automatisk, det skal de være.

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    If Sheets("Oversigt og input").Range("G7").Value > 7 Or Sheets("Oversigt og input").Range("G7").Value < 1 Then
        MsgBox " G7 er udenfor værdiområdet, Tast om"
        Application.Undo    ' sætter tilbage til gammel værdi
    End If
End Sub
Avatar billede tariboventola Nybegynder
23. marts 2006 - 23:58 #11
Ej, jeg er ved at gå amok! Jeg har nu sat den på automatisk beregning, men det virker stadig ikke. Jeg kan frit indtaste værdier i G7 der er større end 7 og mindre end 1 uden der kommer en infoboks op. Der er ingen problemer med, at der er mellemrum i ark-navnet, vel? (altså "Oversigt og input")
Avatar billede kabbak Professor
23. marts 2006 - 23:59 #12
Har du sat koden i ThisWorkbook modulet og ikke i arkets modul ???
Avatar billede kabbak Professor
24. marts 2006 - 00:02 #13
Du sagde også at det var en formel i G7, ikke en indtastning, den virker kun hvis der er en formel.

Den skal jo bruge en formel for at regne
Avatar billede tariboventola Nybegynder
24. marts 2006 - 00:05 #14
Ja, der er en formel i (prøvede også bare at indtaste for at tjekke).

Det med, at koden skal stå i ThisWorkbook og ikke arkets modul, hvordan tjekker jeg det? Jeg ser kun ét stort modul (en hvid skærm). Undskyld, jeg er total newbie
Avatar billede kabbak Professor
24. marts 2006 - 00:09 #15
højreklik på en arkfane, vælg vis programkode
nu kan du ude til venstre se dine arknavne og ThisWorkbook

dobbeltklik på ThisWorkbook, så kommer modulet frem, der skal koden være
Avatar billede tariboventola Nybegynder
24. marts 2006 - 00:15 #16
Ude til venstre er der et flyvende vindue, der hedder "properties - Ark 1" - men af alle valgmulighederne under fanebladet "alphabetic", er der ingen der hedder ThisWorkbook
Avatar billede kabbak Professor
24. marts 2006 - 00:19 #17
det er måske blevet gemt, tryk CTRL+r
Avatar billede tariboventola Nybegynder
24. marts 2006 - 00:30 #18
Jaa, sådan! Nu virker det! Argh, du er Gud!!

Desværre blev jeg nødt til at fjerne den undo-sætning du tilføjede. Eller, ja, måske kan du også løse dét problem. Jeg har to kombinationsbokse (en drop-down-menuer), hvor man kan vælge mellen tallene fra 1 til 7. De har inputværdier i cellerne F7 og F8. Summen af F7 og F8 er beregnet i G7 og det er denne sum, der ikke må være 0 (dvs. under 1) eller over 7. Problemet med din undo-sætning er - tror jeg!! - at den ikke kan sætte den gamle værdi i kombinationsboksen tilbage (det er jo ikke som sådan en celle)..

Men du skal nu have point og tusind tak for din hjælp uanset!
Avatar billede kabbak Professor
24. marts 2006 - 00:38 #19
ok, så ved du noget mere om moduler også, der findes faktisk 4 forskellige.
Ark moduler ', devirker i det ark som de er i, bruges mest til de automatiske makroer
ThisWorkbook modulet, de virker på alle ark  bruges mest til de automatiske makroer
almindelig moduler , dt er her makroer bliver placeret når du optager dem
og sidet Class moduler, special modul, jeg bruger dem ikke

Så er der Forms og deres moduler, som kan lidt af hvert
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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