06. januar 2003 - 14:47Der er
22 kommentarer og 1 løsning
Makro
Hej Hej
Jeg sidder med et lille problem inde i en Excel. Jeg vil gerne indsætte en række ved hjælp af makroen, og det er i sig selv ikke noget problem, men når jeg gerne selv vil bestemme hvor rækken skal indsættes bliver det til et problem....?
Jeg vil gerne at "rækken" altid bliver indsat over/under rækken X, håber at spørgsmålet er til at forstå....
Skal makroen spørge hvor rækken skal indsættes, eller vil du starte med at markere en række, hvor der skal indsættes en, og herefter starte afviklingen af makroen?
Hvis nu vi siger at makroen skal sætte den første række ind ovenfor række 7, næste gang skal indsætte den nye række, er det ovenfor række 8 osv. Dvs. at efter en første indsættelse skal makroen selv finde ud af at den skal gå en række ned før den indsætte den nye, når der bliver trykket på kommandoknappen......kan det laves
tak for din hjælp.....men den nederst af dine eksempler forstår jeg ikke....?
når jeg "kører" makroen sker der følgende: den indsætter en ny række ved række 5+1 (rigtig) derefter indsætter den en ny række ved række 20+1 ????? og til slut indsætter den en ny række ved række 25+1 (rigtig)
men jeg tror at jeg har forklaret hele mit "lille" problem forkert....
det jeg er ude efter er en makro der hver gang den bliver aktiveret indsætte en ny række overfor/nedefor den forudgående....?
dvs. at makroen skal indsætte en ny række f.eks. ved række 7 derefter skal brugeren have mulighed for at lave nogle indtastninger.....næste gang makroen bliver aktiveret skal makroen indsætte en ny række ved 7+1, næste gang igen skal rækken indsættes ved 7+2 osv.... men der vígtig at brugeren for mulighed for at lave indtastninger i mellemtiden......
OK - så har du behov for en tæller, der ikke bliver nulstillet hver gang macroen afsluttes. Når macroen afsluttes, slettes alle variablers indhold fra hukommelsen, og når den starter igen ved den ikke hvad X var sidste gang. Derfor:
Du kan enten skrive tælleren til reg-databasen (fyy - noget snavs) eller til fx. en ekstern fil :o)
Skrivning/læsning fra ekstern fil, se www.eksperten.dk/spm/297031 Du kan næsten bare kopiere det hele. Problemer, så spørg igen...
Tak for din hjælp martin moth det virker bare, men jeg har lige et par ting mere som jeg ikke hitte ud af, hvis du gider og blive ved at hjælpe en nybegynder....?
1. kan makroen på en eller anden måde nulstille den txt fil som excel skriver når man er færdig.....fordi er nemlig min mening at excel-filen skal bruges som skabelon.....?
2. er det muligt at videre udbygge makroen så den kan kopier formlerne fra ovenstående række med ned i den nye....?
Ps. jeg vidste ikke at dette en så stor opgave.....beklager!!
Sub auto_close() 'Denne sub køres automatisk når regnearket lukkes i Excel Dim filnummer As Integer filnummer = FreeFile Open "C:\Fil.txt" For Output As #filnummer Print #filnummer, "6" 'Skriver startværdien til filen - klar til senere brug Close #filnummer End Sub
ad 2.
Efter linien x = Str(Val(x) + 1) indsætter du følgende kode, der kopierer formlen ovenfor (kun formlen i kolonne A, ikke kolonne B, C, ...)
Range("A" & Val(x) - 1).Select ' < NY KODE Selection.Copy ' < NY KODE Range("A" & Val(x)).Select ' < NY KODE ActiveSheet.Paste ' < NY KODE Application.CutCopyMode = False ' < NY KODE
Mht. din kommentar i dit PS, så kan du jo bare give flere points :o)
Som du nok har regnet ud er jeg nybegynder med stort B, også på denne side. Jeg skal nok være god ved dig ret point mæssigt, hvis du gider og hjælpe en (forhåbentligt) en sidste gang.
Det sidste vil være at det skal hele skal lægge sammen forneden.
Eks.
Jeg har en formel der ser ud som følgende:
C4/B4 resultatet vises i D4 Så sættes der en ny række ind: C5/B5 resultatet vises i D5
Nede i D8 skal summen af D4:D5 vises
Mit problem er når jeg indsætte den nye række ændres D8 til D9 men formelen ser stadigvæk ud som før (D4:D5), men den skulle jo gerne være ændret til D4:D6. Hvordan laves det…..?
Ved at medtage cellen over og under dine tal til summering vha. SUM() I stedet for =SUM(D4:D5) skriver du =SUM(D3:D6). Det forudsætter selvfølgelig, at der ikke står noget i cellerne D3 og D6.
Som det fremgår af ovenstående, virker sum-formlen relativt til den AKTUELLE celle, i dette tilfælde celle D9. Altså tages der udgangspunkt i celle D9. Herfra summeres i eksemplet fra række nummer fire overfor den aktuelle række (-4) til rækken lige over den aktuelle række (-1)
Altså svarer den viste formel til "Sum(D5:D8)"
I ovenstående kan du ændre D9, -4 og -1 til det der passer dig, eller gøre dem til funktioner af x, hvis det passer bedre.
Jeg kan ikke få den foreslået formel til at virke til mit formål.....det jeg er ude efter er, en metode (formel) der automatisk kan finde ud af at, formelen, hvor summen vises, skal udvides med med en nye celle hver gang der indsættes en række. Og det skulle gerne kunne kører sammen med alt det andet der er blevet lavet i makroen.....?
Om der skal stå 4-x, x+10, x-5 eller hvad må du selv finde ud af - det afhænger af hvilke rækkenumre du bruger, og hvor mange rækker der skal summeres...
Range("D" & Val(x) - 1).Select ' < NY KODE Selection.Copy ' < NY KODE Range("D" & Val(x)).Select ' < NY KODE ActiveSheet.Paste ' < NY KODE Application.CutCopyMode = False ' < NY KODE
Open "J:\Fil.txt" For Output As #filnummer Print #filnummer, x 'Skriver indholdet af x til filen Close #filnummer
End Sub Sub auto_close() 'Denne sub køres automatisk når regnearket lukkes i Excel
Dim filnummer As Integer filnummer = FreeFile Open "J:\Fil.txt" For Output As #filnummer Print #filnummer, "5" 'Skriver startværdien til filen - klar til senere brug Close #filnummer End Sub
Smukt - sådan ville jeg også selv have gjort det (øhh - men der er jo også mig selv der har skrevet 90% af det *GGG*)
Tak for de 60p :o)
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.