+ Reply to Thread
Results 1 to 2 of 2

vba code to clear contents of cell

Hybrid View

codesRus vba code to clear contents of... 07-16-2012, 11:38 AM
Leith Ross Re: vba code to clear... 07-16-2012, 12:16 PM
  1. #1
    Registered User
    Join Date
    05-29-2012
    Location
    USA
    MS-Off Ver
    Excel 2010
    Posts
    34

    vba code to clear contents of cell

    I would like the vba code that clears the content everytime a date is deleted from column D. Here is the code I have so far and would like to add the clear contents automatically for column G if column D (the date) is removed.

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cell As Range
    If Not Intersect(Range("D:D"), Target) Is Nothing Then
    If Target.Count > 1 Then Exit Sub
       If IsDate(Target.Value) And IsDate(Target.Offset(0, -1).Value) And IsEmpty(Target.Offset(0, 3)) Then
           Target.Offset(0, 3).Value = GetWorkDays(Target.Offset(0, -1).Value, Target.Value)
    End If
    End Sub
    Function GetWorkDays(StartDate As Long, EndDate As Long) As Long
    ' returns the count of days between StartDate - EndDate minus Saturdays and Sundays
    Dim d As Date, dount As Long
       For d = StartDate To EndDate
           If Weekday(d, vbMonday) < 6 Then
               dCount = dCount + 1
           End If
       Next d
       GetWorkDays = dCount
    End Function

  2. #2
    Forum Moderator Leith Ross's Avatar
    Join Date
    01-15-2005
    Location
    San Francisco, Ca
    MS-Off Ver
    2000, 2003, & 2010
    Posts
    23,259

    Re: vba code to clear contents of cell

    Hello CodesRus,

    Here is the amended macro. When you are working with either the Change or Selection Change events, you must disable Events and re-enable Events before exiting the macro if the code changes a a cell value or selects another cell. If you do not then Excel will most likely crash do to a cascade stack overflow error.
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    
        Dim Cell As Range
        
            If Target.Count > 1 Then Exit Sub
            
            If Not Intersect(Range("D:D"), Target) Is Nothing Then
                Application.EnableEvents = False
                
                If IsDate(Target.Value) And IsDate(Target.Offset(0, -1).Value) And IsEmpty(Target.Offset(0, 3)) Then
                    Target.Offset(0, 3).Value = GetWorkDays(Target.Offset(0, -1).Value, Target.Value)
                ElseIf IsEmpty(Target) Then
                    Target.Offset(0, 3) = ""
                End If
                
                Application.EnableEvents = True
            End If
            
    End Sub
    Sincerely,
    Leith Ross

    Remember To Do the Following....

    1. Use code tags. Place [CODE] before the first line of code and [/CODE] after the last line of code.
    2. Thank those who have helped you by clicking the Star below the post.
    3. Please mark your post [SOLVED] if it has been answered satisfactorily.


    Old Scottish Proverb...
    Luathaid gu deanamh maille! (Rushing causes delays!)

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1