12. november 2003 - 15:05Der er
28 kommentarer og 1 løsning
Søge i en kolonne og tage date fra de næste 6 kolonner.
Hej alle, Jeg har en tabel med ca. 2000 rækker og 9 kolonner. Første kolonne er en forkortelse på 3 bogstaver. For hver forkortelse er der et antal indgange i de resterende kolonner. Jeg vil gerne have trukket alt data ud for hver enkelt forkortelse via en søgning. Jeg vil have et forsideark med et inputfelt og en knap til at søge, hvis der skrives AAA skal søgningen finde alle de linjer i tabellen (ark2) hvor indgang 1 matcher AAA og smide dem i en tabel på forsiden.
Hvordan kan det laves?
Kan man ligeledes tilføje et 3. ark der indeholder alle de forskellige forkortelser ud hvor man så i det ark kan tilføje navn til forkortelse. For så ville jeg gerne have trukket dette navn over på forsiden ved en søgning. Altså så der kommer 2 resultater: en tabel med data fra ark 2 og et felt med navn hentet via ark 3.
Hvor tæt kommer nedenstående kode på dit første ønske :
Sub hent() c = InputBox("Hent data for produkt eks: AAA", "hentdata") Dim a As Range Dim b As Range Set a = Worksheets("ark2").UsedRange Set b = Worksheets("ark1").Cells b.Delete Dim i As Long For i = 1 To a.Rows.Count If a(i, 1) = c Then a.Rows(i).Copy Worksheets("ark1").Range("A65536").End(xlUp)(2, 1).Insert End If Next i End Sub
aheiss >> Det ser rimeligt ud, men jeg tror ikke det skal være en dialogbox men bare en celle.
Din kode søger igennem kolonne A i ark2 og indsætter for hver funden "AAA" de næste celler i ark1 på først kommende tom linje. Har jeg forstået rigtigt?
Jeg tænker noget i retning af et komplet layout på forsiden med en tom tabel. I A1 skriver man så forkortelsen og visual går i gang med at søge og genererer tabellen fra celle A7 og ned så langt som nødvendigt. Jeg kender ikke så meget til vb, men jeg vil gerne vide lidt mere om syntaks. Kan du linke til en god side hvor jeg kan læse om de forskellige kommandoer til brug med Excel.
Du kunne bruge avanceret filter Navngiv dit dataområde, "database" . På det andet ark skriver du en overskrift i A1 og søgekriterie i A2. Navngiv disse 2 celler "Kriterie"
Bestem hvor du ønsker outputtet og navngiv de celler der skal indeholde overskrifterne "Output".
Nu kan du så køre en makro som nedenstående hver gang du har ændret i søgekriterierne. (lav en knap der kører den)
bak >> Det ser rigtigt godt ud, det er helt klart noget i den retning jeg skal bruge. Jeg kigger lige lidt nærmere på det og ser hvordan det vil virke i mit tilfælde. Men kan jeg blive fri for at have søgekriteriet i tabellen, altså f.eks aab?
Lige en ting mere jeg håber at kunne få hjælp med. Da det ikke kun er mig der skal bruge databasen er jeg ikke så vild med makroer da de jo skal godkendes hvis de bruges på en anden computer. Så jeg vil høre om man kan køre makroen via vba i stedet for så regnearket kan åbnes på en vilkårlig maskine og køre uden at godkende noget?
For lige at præcisere yderligere. Jeg kunne godt tænke mig det sådan, at når man taster en forkortelse og trykker enter, så kommer tabellen frem så man ikke behøver trykke på nogle knapper eller noget.
ok, det virker meget fint uden knappen. Men det er altså ikke rigtigt muligt at køre en advanced filter via visual basic script? Altså at sætte filteret i stedet for at kalde makroen. Alternativet var jo at kode søgningen i visual, men det er en rimeligt skidt løsning når det nu er indbygget i Excel synes jeg.
Når jeg sender regnearket til andre, så kan de jo som standard ikke køre makroen uden at sætte deres securitylevet til low. Hvordan kan dette gøres lettest sådan at de kan køre makroen ved bare at autorisere lige præcis den makro uden at ændre sikkerhedsniveau.
makro og visual basic for applications er det samme, så uanset hvad du vælger har du samme problem. Standard står security til medium, hvilket betyder at brugeren bliver spurgt. Du kan måske vælge at signerere din makro/kode, men det ved jeg ikke nok om hvordan man gør.
ok, så ser jeg ingen fordel ved ikke at beholde makroen. Jeg har læst lidt om at signere, men jeg kan ikke finde nogle steder hvor man kan få et digitalt id gratis.
brugeren vil selvfølgelig blive spurgt hver gang. Jeg har bestilt et certifikat hos TDC, det er gratis. Så må vi se om jeg kan få det til at virke. Jeg vil gerne protecte hele arket pånær A2, det kan jeg godt. Men makroen vil ikke køre efter dette, skal jeg også unprotecte de felter data bliver kopieret over i?
Jeg har løst problemet, jeg har sat makroen til at ubeskytte arket og så køre filteret og slutte af med at beskytte arket igen. Simpelt og lige til og forhåbentligt en ok løsning.
Bak vil du ligge et svar så du kan få nogle point, de er fuldt ud fortjente.
tak for hjælpen, du har virkeligt reddet mig. Lige en sidste ting, kan du give mig et visual script der kører en makro ved tryk på en celle bare, så hvis man vælger cellen køres makroen?
Jeg har jo tabellen og så vil jeg gerne sortere efter de forskellige overskrifter, så jeg har lavet en makro der sorterer tabellen efter en af søjlerne. Jeg ville så lave tilsvarende makroer for de andre søjler og så sætte visual til at køre en makro for celle A7, en anden for celle A8. Det kan vel sagtens lade sig gøre, men kan man slippe for at have 8 makroer eller er det det letteste?
Du kan køre en makro ved dobbelklik på en celle ved at lægge denne ind i arkets eget kodemodul.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True If Not Intersect(Target, Range("F11")) Is Nothing Then Call DinEgenMakro End If End Sub
Virker helt perfekt, men kan man undgå at skulle lave koden for hver enkelt makro og også at undgå at skulle lave 8 makroer. Altså en makro der tager en værdi og sorterer derefter? Eller vil det letteste være at lave 8 makroer og så indsætte koden for hvert enkelt felt, altså 8 gange kode også?
Sub sort() ActiveSheet.Unprotect Range("A5:I20").sort Key1:=Range("E6"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
Sådan ser makroen ud, denne kalder jeg så via din visual kode.
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.