Avatar billede tvc Seniormester
29. januar 2009 - 14:29 Der er 4 kommentarer og
1 løsning

Opslag i VBA

Hej

Jeg har et ark hvor jeg gerne vil have en dobbelt opslagsfunktion.

    A    B           
1  A1    Afdeling 1
2  A5    Afdeling 5

Jeg søger en funktion der kan:

indsætte Afdelingnavn i kolonne B når der tastes Afdelingskoden i kolonne A.

indsætte Afdelingskode i kolonne A når der vælges (Datavaliderings liste) afdelingsnavn i kolonne B.

Det skal dermed være lige meget om brugeren vælger/skriver afdelingskoden i kolonne A eller afdelingsnavnet i kolonne B.

Kan det lade sig gøre?

+ Det vil ligeledes være super godt om funktionen kan afgrænses til at virke på række 4 til 50 og ark1, ark5, ark7 m.v.

Hilsen

TVC
Avatar billede excelent Ekspert
29. januar 2009 - 15:21 #1
Navngiv dit område med afd.koder "akode"
Navngiv dit område med afdelinger "afdeling"
eller indtast i Range linierne hvor disse data er + Ark navn

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A4:A50,B4:B50")) Is Nothing Then Exit Sub
If Target.Column = 1 Then
Target.Offset(0, 1).Value = Sheets("Ark2").Range("akode").Find(Target.Value, LookIn:=xlValues).Offset(0, 1)
End If
If Target.Column = 2 Then
Target.Offset(0, -1).Value = Sheets("Ark2").Range("afdeling").Find(Target.Value, LookIn:=xlValues).Offset(0, -1)
End If
End Sub
Avatar billede tvc Seniormester
29. januar 2009 - 15:44 #2
Det virker fantastisk - dog er der en lille ting ;-)

Afdelingskoderne er oplistet i nedenstående rækkefølge og når jeg vælger A tager funktionen KA. Kan funktionen sættes til at vælge den unikke værdi?

B
G
U
M
L
O
H
KO
P
D
KA
ØU
F
A
Avatar billede excelent Ekspert
29. januar 2009 - 17:03 #3
prøv denne

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, Range("A4:A50,B4:B50")) Is Nothing Then Exit Sub
If Target.Column = 1 Then
Target.Offset(0, 1).Value = Sheets("Ark2").Range("akode").Find(Target.Value, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1)
End If
If Target.Column = 2 Then
Target.Offset(0, -1).Value = Sheets("Ark2").Range("afdeling").Find(Target.Value, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, -1)
End If
End Sub
Avatar billede tvc Seniormester
29. januar 2009 - 22:15 #4
Tak den virker! Lægger du et svar?
Avatar billede excelent Ekspert
29. januar 2009 - 22:29 #5
velbekom
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