21. februar 2001 - 10:43Der er
6 kommentarer og 1 løsning
Autofyld med vba.
Hvad skal jeg skrive for at formlen automatisk kopier sig til resten af arket??
Det går galt når jeg indtaster mere data i arket end til eks. G4. Sub Opdater() Range(\"g2\").Select Selection.AutoFill Destination:=Range(\"g2:g4\") Range(\"g2\").Select Range(\"a2\").Select Selection.AutoFill Destination:=Range(\"a2:\") Selection.Sort Key1:=Range(\"a2\"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom End Sub
Hvis du har din formel i f.eks. g2 og vil have den til Range(\"g2:g4\") kan det gøres således.
Sub Opdager() Range(\"g2:g4\").Select Selection.FillDown End Sub
Jeg tror, at jeg har en fornemmelse af, hvad du vil, men jeg er ikke sikker...! Du har nogle data i kolonnerne A->F og en formel i G (right?) Du fylder flere data i A->F og vil gerne have kopieret formler i G kolonnen, således er i G findes en formel for hver linie, som er udfyldt i A->F. Hvis det er rigtigt, så kan du lave denne lille ting. (Jeg går udfra, at du har formelen i G2.
Sub Opdater() Dim rCell As Range Dim iRow As Integer \'Finder ud af hvor mange rækker der er udfyldt For Each rCell in Worksheets(\"Ark1\").Range(\"A3:A10000\") If rCell = \"\" Then iRow = rCell.Row - 1 Exit for End If Next rCell
\'Indsætter formler for alle rækker Range(\"G2:G\" & iRow).Select Selection.FillDown Range(\"A2\").Select End Sub
Det er helt rigtigt, sådan har jeg mine formler stående. Men når jeg skriver hvad du skriver, kopier den, den tekst jeg har stående i G1 ned i G2, og der sker ikke noget med resten af kollonen.
TAk, nu virker det. Men det var ikke meningen at den også skulle kopier formateringen. Jeg har en vandret linie mellem række 1 og 2, den bliver nu også kopieret ned i B-kollonen.
Dim rCell As Range Dim iRow As Integer Dim sFormel As String sFormel = Worksheets(\"Eksamen på PC\").Range(\"H3\").FormulaR1C1
\'Finder ud af hvor mange rækker der er udfyldt For Each rCell In Worksheets(\"Eksamen på PC\").Range(\"A3:A10000\") If rCell = \"\" Then iRow = rCell.Row - 1 Exit For End If Next rCell
\'Indsætter formler for alle rækker For Each rCell In Worksheets(\"Eksamen på PC\").Range(\"H2:H\" & iRow) rCell.FormulaR1C1 = sFormel Next rCell
\'Sortering Range(\"D2\").Select Selection.Sort Key1:=Range(\"D2\"), Order1:=xlAscending, Key2:=Range(\"C2\") _ , Order2:=xlAscending, Key3:=Range(\"B2\"), Order3:=xlAscending, Header:= _ xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom End Sub
Private Sub cmdopdater_Click() Dim rCell As Range Dim iRow As Integer Dim sFormel As String sFormel = Worksheets(\"Eksamen på PC\").Range(\"H3\").FormulaR1C1
\'Finder ud af hvor mange rækker der er udfyldt For Each rCell In Worksheets(\"Eksamen på PC\").Range(\"A4:A10000\") If rCell <> \"\" Then rCell.Offset(0, 7).FormulaR1C1 = sFormel Else Exit For End If Next rCell
\'Sortering Range(\"D2\").Select Selection.Sort Key1:=Range(\"D2\"), Order1:=xlAscending, Key2:=Range(\"C2\") _ , Order2:=xlAscending, Key3:=Range(\"B2\"), Order3:=xlAscending, Header:= _ xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom End Sub
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.