19. januar 2004 - 00:44Der er
8 kommentarer og 1 løsning
Genopret slettet celle
Hej I en projektmappes regneark er anbragt følgende kode der når en celle slettes i kolonne A efterfølgende sletter resten af rækken. Jeg har lagt en lille sikkerhed ind for ikke ved en fejl at slette en hel række - den fungerer udmærket pånær at selve den slettede celle ikke genoprettes efter man har svaret nej til at slette rækken. Kan dette lade sig gøre? Jeg har forsøgt med at lave en oldselection og genoprette den efter negationen men uden held:
Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Dim Trange As Range Dim c As Range Set Trange = Range("A3: A1000") 'slå alle events fra da vi her henter nye data og den ellers vil køre igen. Application.EnableEvents = False
On Error GoTo Slut
'check om den indtastede celle er i Trange If Not Intersect(Target, Trange) Is Nothing Then 'Hvis cellen ikke er tom (blevet slettet)
If Len(Target.Value) = 0 Then 'Target.EntireRow.ClearContents Dim Msg, Style, Title, Ctxt, Response, MyString Msg = "Ønsker du at slette rækken?" ' Define message. Style = vbYesNo + vbDefaultButton2 ' Define buttons. Title = "Meddelelsesbox" ' Define title. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then Target.Offset(0, 1).ClearContents Target.Offset(0, 2).ClearContents Target.Offset(0, 3).ClearContents Target.Offset(0, 4).ClearContents Target.Offset(0, 5).ClearContents Target.Offset(0, 6).ClearContents Target.Offset(0, 7).ClearContents End If
End If
End If Application.EnableEvents = True Exit Sub
'slå events til igen Slut: Application.EnableEvents = True MsgBox ("Fejl fundet") End Sub
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Public BeforeVal As String 'NY global variabel for gammel værdi
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False Dim Trange As Range Dim c As Range Set Trange = Range("A3: A1000") 'slå alle events fra da vi her henter nye data og den ellers vil køre igen. Application.EnableEvents = False
On Error GoTo Slut
'check om den indtastede celle er i Trange If Not Intersect(Target, Trange) Is Nothing Then 'Hvis cellen ikke er tom (blevet slettet)
If Len(Target.Value) = 0 Then 'Target.EntireRow.ClearContents Dim Msg, Style, Title, Ctxt, Response, MyString Msg = "Ønsker du at slette rækken?" ' Define message. Style = vbYesNo + vbDefaultButton2 ' Define buttons. Title = "Meddelelsesbox" ' Define title. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then Target.Offset(0, 1).ClearContents Target.Offset(0, 2).ClearContents Target.Offset(0, 3).ClearContents Target.Offset(0, 4).ClearContents Target.Offset(0, 5).ClearContents Target.Offset(0, 6).ClearContents Target.Offset(0, 7).ClearContents Else Target = BeforeVal 'NY Indsætter den gamle værdi igen End If
End If
End If Application.EnableEvents = True Exit Sub
'slå events til igen Slut: Application.EnableEvents = True MsgBox ("Fejl fundet") End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) BeforeVal = Target.Formula 'NY Fanger gammel værdi
Hej kabbak Nå du er i lige så høj grad som undertegnede en natteravn - dejligt at du gider kigge på det. Det fungerer ikke helt. Den sletter blot den celle (i Kolonne A) man står i - ingen spørgsmål fremkommer og resten af rækken slettes ikke!
Undskyld kabbak - den lavede en fejl første gang hvor jeg ikke havde fået Selection_Change med. Derfor var jeg nødt til at køre en sub med Application.enableevent = True - nu kører det ---> skide godt.
Tror du at der er risiko for lidt sammenblanding - jeg har i forvejen noget stående i sub'en pga ønsket om farve af aktive række: Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error GoTo Slut BeforeVal = Target.Formula 'NY Fanger gammel værdi
Static OldRange As Range With Target.EntireRow .Interior.ColorIndex = 19 ' yellow - change as needed End With OldRange.Interior.ColorIndex = xlColorIndexNone Set OldRange = Target.EntireRow Slut: End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Trange As Range Set Trange = Range("A3: A1000") If Not Intersect(Target, Trange) Is Nothing Then BeforeVal = Target.Formula 'NY Fanger gammel værdi End If
Static OldRange As Range With Target.EntireRow .Interior.ColorIndex = 19 ' yellow - change as needed End With OldRange.Interior.ColorIndex = xlColorIndexNone Set OldRange = Target.EntireRow
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.