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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.