Avatar billede nemlig Professor
27. december 2012 - 17:52 Der er 9 kommentarer og
1 løsning

VBA - validering af input

Hejsa.
Jeg har et regneark, hvor jeg gerne vil kontrollere et område for korrekt input.
Området jeg vil tjekke er fx "D4:d200", og indholdet i disse celler skal være et af de værdier, der fremgår i området "S1:U1"

Fx
S1="jjo"
T1="tgf"
U1="gij"

Der skal således kontrolleres for, at det der tastes ind i området D4:D200 SKAL have ét af ovenstående indhold.
Hvis Ikke, så MsgBox.

Er det mon muligt?
Avatar billede natkatten Mester
27. december 2012 - 19:24 #1
Kan denne bruges:

http://gupl.dk/689343/
Avatar billede nemlig Professor
27. december 2012 - 19:36 #2
Hey - det ser rigtigt spændende ud.
Jeg har ikke arbejdet med navneområder, så det skal jeg lige finde ud af.
Jeg er lidt usikker på, om navneområder er den rigtige løsning.
Det hænger sammen med, at jeg har 10 regneark i samme projektmappe, hvor der i hvert regneark skal være den pågældende validering, men på hvert regneark, er det forskellige bruger-initialer, som er de valide.
Jeg leger lige lidt med det og vender tilbage.
Avatar billede nemlig Professor
27. december 2012 - 19:39 #3
Kan man lave løsningen, så den pågældende kode gemmes på selve regnearket i VBA og at det er den samme kode, som anvendes på alle 10 ark.
Så kan jeg bare i området S1:U1 angive de valide date på hvert af de 10 ark?
Avatar billede nemlig Professor
27. december 2012 - 21:28 #4
Hmmm-det driller lidt.
Jeg har oprettet et navneområde for hvert regneark, og kalder dem forskelligt:

Tilladte_vaerdier
Tilladte_vaerdier2
Tilladte_vaerdier3
osv.

Dit forslag til VBA-kode gemmer jeg på hvert regneark og ændrer disse linjer:

Tilladte = Ark2.Range("Tilladte_vaerdier2").Address
    Ark = "'" & Ark2.Range("Tilladte_vaerdier2").Parent.Name & "'!"

Bemærk, at jeg har rettet ark-navnet, så det passer med det ark, hvor koden er gemt under og jeg har ændret navnet på navneområdet.
 
Men det giver Debug-fejl.
Avatar billede natkatten Mester
27. december 2012 - 22:33 #5
Hmm, kan du egentlig ikke nøjes med alm. datavalidering uden VBA? Nåh, men her er et eksempel på brug af flere navngivne områder (alle definerede på et særligt ark):

http://gupl.dk/689351/

Du burde nu kunne udvide denne til at omfatte 10 eller flere ark.
Avatar billede store-morten Ekspert
27. december 2012 - 22:40 #6
Prøv:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo slut
      If Not Intersect(Range("D4:D200"), Target) Is Nothing Then

      If Target.Value = "" Then Exit Sub
      If Not Target.Value = Range("S1").Value _
      And Not Target.Value = Range("T1").Value _
      And Not Target.Value = Range("U1").Value Then

Target.Activate

    Dim Svar As String
    Dim CorrectAnswer As Boolean
    Do
        Svar = InputBox("Der kan anvendes følgende:" & vbCrLf & _
        Range("S1").Value & vbTab & _
        Range("T1").Value & vbTab & _
        Range("U1").Value, "Du har indtastet bruger-initialer, der ikke er tilladt.")
       
        If Svar = Range("S1").Value Or Svar = Range("T1").Value Or Svar = Range("U1").Value Then
            CorrectAnswer = True
                  Else
            CorrectAnswer = False
            MsgBox "Det var skidt - men vi prøver bare igen!"
        End If
    Loop Until CorrectAnswer

Target.Value = Svar

    End If
    End If
    Exit Sub
slut:
    MsgBox "Der opstod en uventet fejl.  FejlNr: " & Err.Number
End Sub
Avatar billede nemlig Professor
27. december 2012 - 23:11 #7
#5 Jeg får debug-fejl, når arket er beskyttet, mens det fungerer, når det ikke er beskyttet.

#6 Tak for bidraget. Koden er lidt besværlig, da området S1:U1 kan variere fra ark til ark. Sorry - jeg ikke var mere informativ omkring dette.
Avatar billede nemlig Professor
27. december 2012 - 23:53 #8
#5 Jeg kan godt se, at alm. datavalidering kan klare det. Jeg kan jo bare vælge "liste". Det bliver løsningen.
Tak for bidragene.

Smid et svar "Natkatten".
Avatar billede natkatten Mester
28. december 2012 - 10:01 #9
Et svar kommer her.

Generelt vil jeg anbefale dig at arbejde med navngivne områder. De er bl.a. rigtigt nyttige ifm. datavalideringer, hvor jeg også foretrækker at samle de tilladte værdier på et særligt ark (som eventuelt kan skjules).
Avatar billede natkatten Mester
28. december 2012 - 10:11 #10
I øvrigt vil jeg komplimentere Store Morten for en rigtig god kode, som vil kunne anvendes i andre sammenhænge.
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