Avatar billede staal Praktikant
19. januar 2004 - 20:44 Der 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
19. januar 2004 - 21:36 #1
Du kan evt. gøre noget lignende dette:

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
Avatar billede kabbak Professor
19. januar 2004 - 22:07 #2
Brug Datavalidering I B1

Klik ind på B1

Data > Datavalidering fra menulineien

Under indstilleinger vælg helttal

Data: Mellem

Mindste: =HVIS(A1="A";1;HVIS(A1="B";51;HVIS(A1="C";101;"Fejl")))

Maksimum : =HVIS(A1="A";50;HVIS(A1="B";100;HVIS(A1="C";200;"Fejl")))


Find selv på noget til meddelse og fejlmeddelese
19. januar 2004 - 22:29 #3
Rigtigt kabbak - det er noget nemmere
Avatar billede staal Praktikant
21. januar 2004 - 12:12 #4
Hej

Har forsøgt "kabbak" metoden, men får følgende meddelse:
"A named range you specified cannot be found" ?
Avatar billede staal Praktikant
21. januar 2004 - 12:19 #5
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
Avatar billede kabbak Professor
21. januar 2004 - 17:55 #6
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.
21. januar 2004 - 18:05 #7
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.......
Avatar billede staal Praktikant
22. januar 2004 - 09:23 #8
Tak for det - det var det jeg skulle bruge
Avatar billede kabbak Professor
22. januar 2004 - 09:27 #9
Jeg smider er svar, hvis du kunne bruge mit, men giv også flemmingdahl nogen eller alle.
22. januar 2004 - 09:41 #10
Svar
Avatar billede kabbak Professor
22. januar 2004 - 10:42 #11
tak for point ;-))
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