19. januar 2004 - 20:44Der er
9 kommentarer og 2 løsninger
Validerings problem
Celle A1 - her indsættes en tekst "A" "B" eller "C" Celle B1 - her indsættes en værdi > op til max "50" "100" eller "200". Spørgsmålet er hvordan får jeg en validering på plads, så man kun kan taset 0-50 i celle B1, hvis jeg har valgt A i celle A1 og hvis jeg taster 51, så får jeg en dialog boks med en advarsel. Og det samme for de øvrige værdier
1) Højreklik på arkets faneblad og vælg 'View Code' (hedder vist Vis programkode.. på dansk) 2) Paste denne kode derind
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B1")) Is Nothing Then Application.EnableEvents = False Select Case Target.Value Case Is <= 50 If Not UCase(Range("A1").Value) = "A" Then MsgBox "Når 'A1' = A kan du kun indtaste et beløb <= 50", _ vbExclamation + vbOKOnly, "Systeminformation" Target.Value = "" Target.Select End If Case Is <= 100 If Not UCase(Range("A1").Value) = "B" Then MsgBox "Når 'A1' = B kan du kun indtaste et beløb <= 100", _ vbExclamation + vbOKOnly, "Systeminformation" Target.Value = "" Target.Select End If Case Is <= 200 If Not UCase(Range("A1").Value) = "C" Then MsgBox "Når 'A1' = C kan du kun indtaste et beløb <= 200", _ vbExclamation + vbOKOnly, "Systeminformation" Target.Value = "" Target.Select End If Case Else MsgBox "Du kan kun indtaste beløb under 200", _ vbExclamation + vbOKOnly, "Systeminformation" End Select Application.EnableEvents = True End If End Sub
Ideen er at i kolonne A - vil jeg uvilkårlig kunne taste værdi A - B - C som jeg har lyst - kolonne B skal kunne validere værdi og sætte begrænsninger som: A 0-50 - B 51-100 - C 101-250 o.s.v
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B:B")) Is Nothing Then Application.EnableEvents = False If Target.Offset(0, -1) = "A" Or Target.Offset(0, -1) = "a" Then If Target > 50 Then MsgBox "Når 'A" & Target.Row & "' =" & Target.Offset(0, -1) _ & " kan du kun indtaste et beløb mellem 1 og 50", _ vbExclamation + vbOKOnly, "Systeminformation" Target.Value = "" Target.Select End If End If
If Target.Offset(0, -1) = "B" Or Target.Offset(0, -1) = "b" Then If Target < 51 Or Target > 100 Then MsgBox "Når 'A" & Target.Row & "' =" & Target.Offset(0, -1) _ & " kan du kun indtaste et beløb mellem 51 og 100", _ vbExclamation + vbOKOnly, "Systeminformation" Target.Value = "" Target.Select End If End If
If Target.Offset(0, -1) = "C" Or Target.Offset(0, -1) = "c" Then If Target < 101 Or Target > 250 Then MsgBox "Når 'A" & Target.Row & "' =" & Target.Offset(0, -1) _ & " kan du kun indtaste et beløb mellem 101 og 250", _ vbExclamation + vbOKOnly, "Systeminformation" Target.Value = "" Target.Select End If End If Application.EnableEvents = True End If End Sub
Det er en modifiseret udgave af flemmingdakls kode.
Højreklik på din arkfane, vælg vis programkode, sæt den ind der.
Det kan også gøres ved at sætte kabbak's formler ind i hver sin celle, og lade datavalideringen henvise til dem - det virker fint...... formlerne kan jo bare gemmes af vejen.... evt med hvid skrift.......
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.