Avatar billede Laugesen1 Mester
22. juli 2016 - 15:37 Der er 4 kommentarer og
1 løsning

Slet data - når Private Sub Worksheet_Change(ByVal Target As Range) benyttes

For at gør brugen af arket lettere ved indtastning af data, har jeg indsat en kode i selve arket der gør følgende:
- Markeringen springer automatisk en kolonne til højre efter indtast af data.
- I to af kolonnerne indsættes der automatisk et ord fra Range("D94") eller ("D102")

Koden i er arket:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("M5:M54"), Target) Is Nothing Then
    Target.Offset(0, 1).Activate
    End If
    If Not Intersect(Range("Q5:Q54"), Target) Is Nothing Then
    Target.Offset(0, 1).Activate
    End If
    If Not Intersect(Range("N5:N54"), Target) Is Nothing Then
    Target.Offset(0, 1).Value = Range("D94").Value
    End If
    If Not Intersect(Range("O5:O54"), Target) Is Nothing Then
    Target.Offset(0, 1).Value = Range("D102").Value
    End If
    If Not Intersect(Range("P5:P54"), Target) Is Nothing Then
    Target.Offset(0, 12).Value = "Ingen dato"
    End If

Det virket helt efter hensigten.
Men mit problem er, når jeg skal slette data i hele området.
Jeg bruger følgende kode til at slette data:

Public Sub Slet()
Range("M5:AM54").Select
Selection.ClearContents
End Sub

Der sker så det, at sletningen springer fra kolonne til kolonne, og der bliver indsat ord fra Range("D94") og D("102") flere forskellige steder, hvor der ellers nu skulle være tomme celler.

Kan man skrive koden: Private Sub Worksheet_Change(ByVal Target As Range)
på en anden måde, eller skrive en tilføjelse til koden, så det ikke sker.

Er der nogen der har et bud på det?

På forhånd tak
Laugesen
Avatar billede excelent Ekspert
22. juli 2016 - 16:06 #1
prøv

Public Sub Slet()
Application.EnableEvents = False
Range("M5:AM54").Select
Selection.ClearContents
Application.EnableEvents = True
End Sub
Avatar billede store-morten Ekspert
22. juli 2016 - 16:07 #2
Prøv:

Public Sub Slet()
On Error GoTo exitHandler
Application.EnableEvents = False
Range("M5:AM54").Select
Selection.ClearContents
exitHandler:
  Application.EnableEvents = True
  Exit Sub
End Sub
Avatar billede kabbak Professor
22. juli 2016 - 17:17 #3
Public Sub Slet()
Application.EnableEvents = False ' forhindre de automatiske makroer i at køre
Range("M5:AM54").ClearContents
Application.EnableEvents = True ' slå automatiske makroer til igen
End Sub
Avatar billede store-morten Ekspert
22. juli 2016 - 18:07 #4
Public Sub Slet()
On Error GoTo exitHandler ' ved fejl, springes til exithandler:
Application.EnableEvents = False ' forhindre de automatiske makroer i at køre
Range("M5:AM54").ClearContents
exitHandler:
  Application.EnableEvents = True ' slå automatiske makroer til igen, også efter fejl
End Sub
Avatar billede Laugesen1 Mester
23. juli 2016 - 10:42 #5
Jeg har prøvet begge forslag - med og uden exithandler.
De fungerer begge rigtig godt og løser mit problem.
Nu kan jeg bruge slettemakroen uden problemer.

Mange tak for hjælpen til alle, jeg markerer det første forslag som løsning.

Venlig hilsen
Laugesen
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

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