15. marts 2007 - 17:56Der er
2 kommentarer og 1 løsning
Macro til ny linie
Hej.. Jeg har denne kode:
Sub ActiveRowTest() Dim lRow As Long, rCell As Range
ActiveSheet.Unprotect
If Selection.Areas.Count = 1 And Selection.Columns.Count = 1 Then Selection.EntireRow.Insert For Each rCell In Selection lRow = rCell.Row Range("L" & lRow).FormulaR1C1 = "=RC[-2]+RC[-1]" Range("H" & lRow & ",F" & lRow & ",E" & lRow & ", K" & lRow).NumberFormat = "#,##0" Range("A" & lRow).Value = "Ny Sag" Next rCell Else MsgBox "Vælg een celle eller lodrette celler kontinuerligt." End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
Det den gør er, at når jeg eks. markere A2:A5, indsætter den en række nye linier i et låst dokument, og giver bestemte kolonner i disse linier bestemte formateringer tusindtalsseperator ol.
Jeg benytter koden i et skema som det her: __________________ \ a b c d e f g 1 d d d d d d d 2 d d d d d d d 3 c* s* 4 d d d d d d d 5 d d d d d d d 6 c** s** __________________
Skemaet herover viser hvad der skal ske: I linie 3 har jeg eks. 2 funtioner, TÆLV(B1:B2), og en SUM(E1:E2) (samme i linie 6). Når en bruger så vælger at indsætte en ny række i linie 2, kan TÆLV og SUM ikke finde ud af automatisk at ændre deres funkion så de tager højde for den nye linie..
Jeg startede med en kode alá
Sub ActiveRowTest()
x = activecell.row y = "L" & x Rows(ActiveCell.Row).Select Selection.Insert Shift:=xlDown range(y).select ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
End Sub
.. men denne tager ikke højde for at formateringen (død og pine) skal være ens hver gang i alle de specifikke felter (herunder at nogle celler skal være låst, andre ikke).
Hm, måske lavede jeg mit spørgsmål lidt for kompliceret, ser nok lidt uoverskueligt ud:
Hvis jeg benytter en makro med linien: "Selection.EntireRow.Insert" ..tæller de nedenstående funktioner ikke linierne sammen -hvordan får jeg dem til det :)
(Og igen, grunden til jeg ikke benytter "Selection.Insert Shift:=xlDown" er, at jeg efterfølgende skal redigere formatteringen af specifikke celler i den indsatte række.
Jeg har fået det til at virke nu, ved ikke hvorfor det ikke fungerede. Dokumentet skulle bruges til sagssttyring af ejendomme. Eks. ville række 2-34 vise sager fra forrige måned (primo marts), hvor række 35 talte de ovenstående rækker (for at vise hvor mange sager det drejede sig om).
I række 36-45, skulle der så tastes nye sager ind, og så skulle tællere i række 46 vise resultater for indeværende måned, samt sammenlægge begge resultater (meget simplificeret..)
I kollonne 46 skulle man kunne trykke på en knap der tilføjede en sag det rigtige sted (altså indeværende måned), og det var her tællerne ikke rykkede ordentligt med.
Anyways, tællerne virker nu, så ved ikke præcist hvad der har været galt.
Til info har jeg brugt følgende kode:
Sub NySag() Dim lRow As Long, rCell As Range Dim lFirstRow As Long, lLastRow As Long
ActiveSheet.Unprotect
If Range("T" & Selection.Row) <> "S" Then MsgBox "Du kan kun indsætte nye sager ved de markerede punkter.." Exit Sub End If
If Selection.Areas.Count = 1 And Selection.Columns.Count = 1 Then Selection.EntireRow.Insert For Each rCell In Selection lRow = rCell.Row
Linien "If Range("T" & Selection.Row) <> "S" Then" lavede jeg får at kunne styre hvorhenne en bruger fik lov til at indsætte ovennævte nye sag. I rækkerne hvor der ikke står et "S" kolonne "T", kan man ikke få lov til at indsætte en ny sag..
Men ellers tak for tilbuddet om hjælp :)
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.