Avatar billede jean01ad Praktikant
02. maj 2007 - 16:59 Der er 6 kommentarer og
1 løsning

VBA kode til at finde værdi i tabel - nyt spørgsmål

Hej Igen.

Jeg har tidligre skrevet, og følgende og fået følgende svar:

SPG:Jeg har to celler med datoer i. HHV. en start dato og en slutdato. Disse datoer er naturligvis variable hen over året. Den værdi der vælges i hhv. start og slutdato, vil jeg meget gerne have excel til selv at finde i en tabel, der ligger i et andet ark - samt markerer alle data imellem de to datoer.

Dvs. har jeg en startdato der hedder den 1/3-07 og en slutdato der hedder 1/4-07. Så har jeg brug for, at koden markerer alt data imellem de to forekomster.

SVAR:
eks. dine 2 datoer er i A1 og A2 på Ark1
så søges der i Ark2 i område A1:A1000
værdier mellem de 2 datoer markeres samt kolonne B og C


Sub Marker()

Dim fra, til, f, t

fra = Sheets("Ark1").Range("A1")
til = Sheets("Ark1").Range("A2")

f = Sheets("Ark2").Range("A1:A1000").Find(fra, LookIn:=xlValues).Row
t = Sheets("Ark2").Range("A1:A1000").Find(til, LookIn:=xlValues).Row
Sheets("Ark2").Activate
Range("A" & f & ":C" & t).Select


NYT spg: Ovenstående var fint nok, bortset fra, at jeg ikke kan nøjes med at søge i en række. Helt konkret, så vil jeg gerne kunne søge i en tabel. Årsagen er, at mine måneder ligger nedad i kolonnerner, mens datoerne i månederne ligge ud i rækkerne.

Således vil jeg gerne kunne finde en startdato eks. 1/3 der ligger i række 10, og en slutdato 1/4, der ligger i række 11. Nu er det et simpelt eksempel, idet der ligger meget data under hver måned.

Jeg håber, at ovenstående er forståeligt, og at nogen kan hjælpe.
Avatar billede excelent Ekspert
02. maj 2007 - 17:49 #1
koden søger i 1000 rækker, så jeg gætter på du mener kolonner
når du skriver rækker
Så der søges i kolonne A nu
hvilke andre kolonner skal der søges i ?
og i hvor mange kolonner er der data som skal markeres ?
Avatar billede jean01ad Praktikant
03. maj 2007 - 08:44 #2
Jo du har helt ret – jeg mener kolonner.

Helt konkret så har jeg en datatabel der går fra ”C12” til ”AG1832”. I den datatabel har jeg januar måned i række 12, hvor den 1. januar ligger i kolonne ”C”, og den 31. ligger i kolonne ”AG”. Herunder er der 150 rækker med anden data, og så kommer Februar måned i række 163 osv. osv.

Det jeg ønsker er (og jeg håber det kan lade sig gøre), at hvis jeg vælger 10. januar (”L12”) som start dato – og 10. februar (”L163”) som slutdato, så skal macroen gå til ”L12” og markerer 150 linjer ned og ud til ”AG12”. Herefter skal den finde 10. februar – og her skal den så markere fra ”C163” til ”L163” og 150 linjer ned.

Ovenstående er tilfældigvis eksemplificeret med 1 måneds mellemrum mellem start og slutdato, men der kunne teoretisk lige så godt bare være et par dage. Eks. 1. januar til 3. januar – Altså ”C12” til ”E12”. Her skulle makroen altså blot markerer 150 linjer ned i mellem de to celler.

Jeg skal bruge ovenstående til at låse nogle celler ved hjælp af en knap. Grunden er, at det ikke skal være muligt at taste i de valgte celler – når en anden funktion er udført. Det sidste her, kan jeg dog selv finde ud af 
Avatar billede excelent Ekspert
03. maj 2007 - 15:47 #3
Arbejder på sagen... den er lidt kringlet :-)
Avatar billede excelent Ekspert
03. maj 2007 - 20:57 #4
OBS: koden farver valgt område grøn i stedet for at ændre beskyttelse, så du lige kan teste om den virker som den skal.
Hvis dette ikke er hensigtsmæssig, skal du ændre :
.Interior.ColorIndex = 4  til .Locked = False/eller/True

Forudsætter at dine datoer er i "rigtig" datoformat
og dine datoer er i de rækker som du har beskrevet.


Sub Beskyttelse()
Sheets("Ark2").Activate 'ret til ark hvor dine datoer er
Range("c12:ag1823").Interior.ColorIndex = xlNone
fra = Sheets("Ark2").Range("A1") ' ret til hvor dine søgedato er
til = Sheets("Ark2").Range("A2") ' ret til hvor dine søgedato er

For Each c In Range("c12:ag12, C163:ag163, c314:ag314, c465:ag465, c616:ag616, c767:ag767, c918:ag918, c1069:ag1069, c1220:ag1220,c1371:ag1371, c1522:ag1522, c1673:ag1673")
If c >= fra And c <= til Then c.Offset(1, 0).Resize(150).Interior.ColorIndex = 4 'Locked = false
Next

End Sub
Avatar billede excelent Ekspert
03. maj 2007 - 23:40 #5
OBS følgende linie nulstiller evt. farve i C12:AG1823
remark linie med '  hvis....

Range("c12:ag1823").Interior.ColorIndex = xlNone
Avatar billede jean01ad Praktikant
07. maj 2007 - 08:29 #6
Hej excelent - jeg er rigtig glad for din indsats, det ville være helt sort for mig.

Det fungerer helt efter hensigten - Strålende. Tusind tak.
Avatar billede excelent Ekspert
07. maj 2007 - 09:35 #7
ok 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

IT-JOB

Politiets Efterretningstjeneste

AI/ML udvikler i PET

Capgemini Danmark A/S

Java Engineer

Politiets Efterretningstjeneste

Teknisk IT-sikkerhedsspecialist i PET