23. marts 2006 - 22:21Der 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?
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
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
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
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] ?
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
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?
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
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")
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
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
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!
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
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.