02. maj 2007 - 16:59Der 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.
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 ?
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 
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
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.