Avatar billede smons Nybegynder
15. marts 2007 - 17:56 Der 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**
__________________

*tæller aktive rækker (TÆLV) b1:b2 - *sums e1:e2
**tæller aktive rækker (TÆLV) b4:b5 - **sums e4:e5

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).

100p til vinderen :)
Avatar billede smons Nybegynder
15. marts 2007 - 23:15 #1
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.
Avatar billede excelent Ekspert
18. marts 2007 - 17:01 #2
Prøv forklar hvad makroen skal gøre
send evt. filen til pm@madsen.tdcadsl.dk
Avatar billede smons Nybegynder
18. marts 2007 - 20:19 #3
Hej excelent,

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
     
        Range("L" & lRow).FormulaR1C1 = "=RC[-2]+RC[-1]"
        Range("L" & lRow & ",T" & lRow & ",U" & lRow).Locked = True
        Range("E" & lRow & ",F" & lRow & ",H" & lRow & ",J" & lRow & ",K" & lRow & ",L" & lRow & ",M" & lRow).NumberFormat = "#,##0"
       
        Range("A" & lRow & ",B" & lRow & ",C" & lRow & ",D" & lRow & ",E" & lRow & ",F" & lRow & ",G" & lRow & ",H" & lRow & ",I" & lRow & ",J" & lRow & ",K" & lRow & ",M" & lRow & ",N" & lRow & ",O" & lRow & ",P" & lRow & ",Q" & lRow & ",R" & lRow & ",S" & lRow).Locked = False
       
        Range("A" & lRow).Value = "Ny sag"
        Range("U" & lRow).Value = "S"
           
    Next rCell
Else
    MsgBox "Kun en celle"
           
End If

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

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 :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester