• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Scheiden VBA codes

Status
Niet open voor verdere reacties.

lsp1972

Gebruiker
Lid geworden
8 jul 2013
Berichten
69
Hoi

Domme vraag misschien,

Ik heb in een werkblad een VBA code per worksheet, om bij het plaatsen van een kruisje in een andere cel een datum en tijd te plaatsen.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("C:C"), Target)
xOffsetColumn = 52
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If

Set WorkRng = Intersect(Application.ActiveSheet.Range("P:P"), Target)
xOffsetColumn = 52
If Not WorkRng Is Nothing Then
Application.EnableEvents = False
For Each Rng In WorkRng
If Not VBA.IsEmpty(Rng.Value) Then
Rng.Offset(0, xOffsetColumn).Value = Now
Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
Else
Rng.Offset(0, xOffsetColumn).ClearContents
End If
Next
Application.EnableEvents = True
End If


End Sub
Dit werkt prima, uit een andere excel heb ik een code gehaald waar ik bij verstrijken van een datum op een werksheet cellen worden beveiligd.

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
ActiveSheet.Unprotect Password:="xxx"
If Range("O2") < Date Then
Range("C7:D65,F7:G65,I7:J65,L7:N65,O7:P65").Locked = True
Range("O2").Locked = False
Else
Range("C7:D65,F7:G65,I7:J65,L7:N65,O7:P65").Locked = False
End If
ActiveSheet.Protect Password:="xxx"
End Sub
Ik heb alleen de range aangepast.

Maar ik krijg beide codes niet samengevoegd op 1 exelsheet. Of de ene code doet het niet goed, of de andere niet.

Ik wil dus als de datum verstreken is dat de cellen geblokkeerd worden. als de datum nog niet gepasseerd, dan mogen de kruisjes gezet worden.
 
Ben je bekend met

Code:
    Range("C:C,F:F").Select
 
ah ja, dan had de eerste code heel wat korter gekund..

maar nu nog de twee vba's samenvoegen
 
Ik heb het niet direct getest, maar als ze beiden werken, zouden ze na elkaar ook moeten werken.
Deze aanpassing zou ik in elk geval toch doen:

Dit moet helemaal aan 't begin van je code komen:

Code:
ActiveSheet.Unprotect Password:="xxx"

En dit helemaal op 't eind:

Code:
ActiveSheet.Protect Password:="xxx"

Dus géén van beide stukjes ergens halfweg de code.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan