23. januar 2008 - 21:37Der er
27 kommentarer og 1 løsning
Indsæt række i et interval
Jeg har tidligere fået hjælp af excelent med følgende kode. Den skal imidlertid korrigeres lidt, da den volder lidt problemer:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column < 6 Then Range("A" & Target.Row & ":E" & Target.Row).Insert Shift:=xlDown Else Range("F" & Target.Row & ":J" & Target.Row).Insert Shift:=xlDown End If End Sub
Jeg vil gerne have den ændret således at der kun indsættes en linie i intervallet når der dobbelklikkes i hendholdsvis A og F kolonnnen.
Tilsvarende skulle koden gerne virke, selvom min workbook er delt. Kan det lade sig gøre.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column = 6 or Target.Column = 1 Then Range("A" & Target.Row & ":E" & Target.Row).Insert Shift:=xlDown Else Range("F" & Target.Row & ":J" & Target.Row).Insert Shift:=xlDown End If End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column = 1 Then Range("A" & Target.Row & ":E" & Target.Row).Insert Shift:=xlDown If Target.Column = 6 Then Range("F" & Target.Row & ":J" & Target.Row).Insert Shift:=xlDown End Sub
ja indbyggede funktioner udført i vba virker blandt andre ikke i en delt projektmappe. Så må vi finde en omvej, men jeg når det ikke i dag
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) lastRow = Range("A1").SpecialCells(xlLastCell).Row If Target.Column = 1 Then Range("A" & Target.Row & ":E" & lastRow).Cut Range("A" & Target.Row + 1) End If If Target.Column = 6 Then Range("F" & Target.Row & ":J" & lastRow).Cut Range("F" & Target.Row + 1) End If End Sub
Den virker nu når arket er delt men der opstår en konflikt med en anden kode, som jeg har fundet her sitet.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("H3:H90, P3:P90")) Is Nothing Then Exit Sub If Target.Interior.ColorIndex = xlNone Then Target.Interior.ColorIndex = 9 Else Target.Interior.ColorIndex = xlNone End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) LastRow = Range("A1").SpecialCells(xlLastCell).Row If Target.Column = 2 Then Range("B" & Target.Row & ":H" & LastRow).Cut Range("B" & Target.Row + 1) End If If Target.Column = 10 Then Range("J" & Target.Row & ":P" & LastRow).Cut Range("J" & Target.Row + 1) End If End Sub
Hvis jeg klikker på enten kolonne B, så farves henholdsvis kolonne B til H fra markøren og nedad resten af arket. Tilsvarende hvis det er kolonne J, der aktiveres. Jeg håber at der er en løsning.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Application.EnableEvents = False lastRow = Range("A1").SpecialCells(xlLastCell).Row If Target.Column = 1 Then Range("A" & Target.Row & ":E" & lastRow).Cut Range("A" & Target.Row + 1) End If If Target.Column = 6 Then Range("F" & Target.Row & ":J" & lastRow).Cut Range("F" & Target.Row + 1) End If Application.EnableEvents = True End Sub
Den er på plads nu. Jeg ændrede blot: ActiveCell.Offset(1, 0).Copy til ActiveCell.Offset(1, 1).Copy, således at den celle der kopieres fra har en ramme med tynde streger omkring.
Alt er derfor i skønneste orden - så jeg vi gerne sige tak for hjælpen. ;O)).
Har du så et forslag til hvad man kan gøre, hvis jeg vil have en mulighed for at slette en linie i et delt ark? altså modstykket til at indsætte en linie som ovenfor.
Hvis du dobbeltklikker på en tom celle, så flyttes op ellers ned (obs. koden sletter eller indsætter ikke rækker, men flyter data)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Error Resume Next Application.EnableEvents = False If Target.Value = "" Then x = 0: y = 1 If Target.Value <> "" Then x = 1: y = 0 lastRow = Range("A1").SpecialCells(xlLastCell).Row If Target.Column = 1 Then Range("A" & Target.Row + y & ":E" & lastRow).Cut Range("A" & Target.Row + x) End If If Target.Column = 6 Then Range("F" & Target.Row + y & ":J" & lastRow).Cut Range("F" & Target.Row + x) End If ActiveCell.Offset(1, 0).Copy ActiveCell.Resize(1, 5).PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False ActiveCell.Offset(1, 0).Select Application.EnableEvents = True End Sub
Det er da en genial løsning - tak for den. Opretter lige et nyt spørgsmål med nogle point - som tak for hjælpen. ;O)) God weekend.
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.