18. juli 2019 - 12:14Der er
7 kommentarer og 1 løsning
vba .Find i flere ark i en anden workbook.
Jeg vil gerne bruge funktionen .Find til at søge efter en værdi (rngcelle.offset(0,-8)) i et andet regneark, og derefter indsætte værdien til højre for i rngcelle.
her er min kode: rngcelle.Value= _ Workbooks(2).Sheets("Kapslinger").Range("c10:c18").Find(rngcelle.Offset(0, -8).Value).Offset(0, 1).Value * 100
Dette fungerer, men jeg vil gerne lede i flere ark i Workbooks(2), men der er et ark, som der ikke må ledes i, og det kan jeg ikke få til at fungere, for jeg kan ikke finde ud af hvordan jeg kan lave et array som er specifikt helt ned til cellerne i det enkelte ark, og .Find virker ikke hvis ikke den for en cellerange at lede i.
Er det vigtigt med et array? Du kunne bruge en do while <> arket der ikke må bruges? Eller køre en simpel r = 1 to sheets.count og så lave en if der hopper over den hvor navnet fremgår?
Hvis du ligger din .Find kommando ind, bliver det til:
Dim WS As Excel.Worksheet For Each WS In Workbooks(2).Worksheets If WS.Name <> "Navn på ark, der ikke må ledes i" Then rngcelle.Value = WS.Range("c10:c18").Find(rngcelle.Offset(0, -8).Value).Offset(0, 1).Value * 100 End If Next
Den fejler hvis så snart den søger i et ark hvor værdien ikke er. Jeg har så forsøgt at fejlhåndtere således, men det virker ikke..
Min kode ser nu sådan ud: For Each WS In Workbooks(2).Worksheets If WS.Name <> "MPG Alfabetisk" Then rngcelle.Value = WS.Range("c8:g81").Find(rngcelle.Offset(0, -8).Value).Offset(0, 1).Value * 100 On Error Resume Next End If Next
Nu leder den dog, så den bruger funktionen, men fejler hvis den ikke kan finde den i det første ark, den leder i.
Det virker, og du har fået løsning @Dan Elgaard. Men kan du fortælle mig hvorfor der, når den starter med at søge i det korrekte ark, skriver 0 som værdi til at starte med?
Narj, det bli'r nok lidt svært, da jeg jo ikke kender dine ark/system, men jeg gætter på, at det har noget, at gøre med, at, hvis der ikke er et match i første ark, så kan der heller ikke tildeles nogen værdi, og så er default værdien nul.
Synes godt om
Ny brugerNybegynder
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.