Jer har et ark hvor jeg smider data i 3 celler A1:B1:C1, jeg har så lavet en macro som kopier de 3 celler og smider dem ned i række 10 hvor den der efter rykker alt fra række 10 ned en gang og går til bage til A1. det jeg gerne vil have den skal er når de 3 celler har værdi skal den automatisk køre min macro.
Når jeg i Verktøy -> Alternativer -> Rediger Har satt flueben for Flytt merket område etter Enter Og valgt retning Høyre.
Kan et eksempel på tvc's kode i Ark1 bli slik: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim vTmp() As Variant If Target.Address = "$D$1" Then vTmp() = Range(Cells(1, 1), Cells(1, 3)) Rows(10).Insert shift:=xlDown Range(Cells(10, 1), Cells(10, 3)) = vTmp() Range(Cells(1, 1), Cells(1, 3)).ClearContents Cells(1, 1).Select End If End Sub
Rettelse Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim vTmp() As Variant If Target.Address = "$D$1" Then Call Add_vognløb End If End Sub
Du kan evt. gøre din makrokørsel afhængig af om de 3 celler er udfyldt. Her et ex. med udgangspunkt i din kommentar 23/10-2005 15:01:06...
Private Sub Worksheet_Change(ByVal Target As Range) Dim tmp() If Range("A1").Value <> "" And Range("B1").Value <> "" And Range("C1").Value <> "" Then tmp() = Range(Cells(1, 1), Cells(1, 3)) Range(Cells(1, 1), Cells(1, 3)).Value = "" If Range("A10").Value = "" Then Range(Cells(10, 1), Cells(10, 3)) = tmp() Range("A1").Select Else Rows(10).Insert shift:=xlDown Range(Cells(10, 1), Cells(10, 3)) = tmp() Range("A1").Select End If End If End Sub
ja nå er det mange muligheter: Hvis du ikke ønser å tenke på innstillingene i excel, kan du skrive denne koden i modulet til ThisWorkbook:
'** DENNE KOEN KAN STÅ I ThisWorkbook modulen Private Sub Workbook_Open() '** ETTER ENTER FLYTTES AKTIV CELLE TIL HØYRE Application.MoveAfterReturn = True Application.MoveAfterReturnDirection = xlToRight End Sub
som brynil skriver kan man teste at alle 3 celler er utfylt. koden kan stå i modluen til ditt sheet(vognløb) Den kan også se slik ut:
'** DENNE KODE MÅ STÅ I SHEET("Vognløb") Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = Cells(5, 6).Address Then
'*** MAN KOMMER IKKE VIDERE FØR ALLE 3 CELLER ER FYLT UT For Each c In Range(Cells(5, 3), Cells(5, 5)) If IsEmpty(c) Then Cells(5, 3).Select: Exit Sub Next
Cells(5, 6).FormulaR1C1 = "=now()" Call Add_vognløb End If End Sub
til sist har jeg tatt en titt på din egen kode, tor den også kan skrives slik:
Sub Add_vognløb()
Rows(10).Insert With Range(Cells(10, 3), Cells(10, 6)) .Value = .Offset(-5).Value .Offset(-5).ClearContents .HorizontalAlignment = xlCenter 'hvis man ønsker With .Font .Bold = False .Name = "Arial" .Size = 10 End With .Copy End With
Ser at dine data kommer likt i to forskejllige sheets Hvis det ikke er nødvendig, kan du bytte ut siset kode med denne:
Sub Add_vognløb()
Dim vDb() As Variant vDb() = Range(Cells(5, 3), Cells(5, 6)) Range(Cells(5, 3), Cells(5, 6)).ClearContents
Sheets("PrintListe").Select With Sheets("PrintListe").Range(Cells(1, 1), Cells(1, 4)) .Value = vDb .HorizontalAlignment = xlCenter 'hvis man ønsker With .Font .Bold = False .Name = "Arial" .Size = 10 End With .Rows(1).Insert End With
Oki men det skal ud på to sheets for ikke at lave for meget i vognløb!!
Ellers mange tak....... Splokit Out
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.