Reputation: 81
I want to update Cell "D6" based on Range ("N11:N35")
If WorksheetFunction.CountA(Range("N11:N35")) = 0 Then
ThisWorkbook.Sheets("Check List").Range("D8") = "Complete "
Else
ThisWorkbook.Sheets("Check List").Range("D8") = "In Process"
End If
Upvotes: 0
Views: 34
Reputation: 4355
I would write you target code using a select case and also embed the test in a function.
Option Explicit
Public Function GetRangeStatus(ByVal ipRange As Range) As String
Dim myBlankCount As Long
myBlankCount = WorksheetFunction.CountA(ipRange)
Select Case myBlankCount
Case Is = 0
GetRangeStatus = "Completed"
Case Is = ipRange.Rows.Count
GetRangeStatus = vbNullString
Case Else
GetRangeStatus = "In Process"
End Select
End Function
So you can now say
ThisWorkbook.Sheets("Check List").Range("D8")=GetRangeStatus("Range("N11:N35"))
Upvotes: 1
Reputation: 574
does it work for you?
Private Sub Test()
Dim iCountCells As Long
iCountCells = Range("N11:N35").Cells.Count
With ThisWorkbook.Sheets("Check List")
If WorksheetFunction.CountA(Range("N11:N35")) = iCountCells Then
.Range("D8") = "Not started "
Exit Sub
End If
If WorksheetFunction.CountA(Range("N11:N35")) = 0 Then
.Range("D8") = "Complete "
Else
.Range("D8") = "In Process"
End If
End With
End Sub
Upvotes: 2
Reputation: 42236
Try this code, please:
Sub testRangeEvaluate()
Dim sh As Worksheet, rng As Range
Set sh = ActiveSheet 'use here the sheet you need
'it may be ThisWorkbook.Sheets("Check List")
Set rng = sh.Range("N11:N35")
If WorksheetFunction.CountA(rng) = 0 Then
sh.Range("D6").Value = ""
ElseIf WorksheetFunction.CountA(rng) = rng.Cells.Count Then
sh.Range("D6").Value = "Completed"
ElseIf WorksheetFunction.CountA(rng) > 0 And _
WorksheetFunction.CountA(rng) < rng.Cells.Count Then
sh.Range("D6").Value = "In Process"
End If
End Sub
The code will work even if you will extend the range in discussion...
Upvotes: 2
Reputation: 5313
Try this, I'm using CountBlank
to check for blank cells.
If WorksheetFunction.CountBlank(Range("N11:N35")) = 0 Then
ThisWorkbook.Sheets("Check List").Range("D8") = "Complete "
ElseIf WorksheetFunction.CountBlank(Range("N11:N35")) = 25 Then
ThisWorkbook.Sheets("Check List").Range("D8") = ""
Else
ThisWorkbook.Sheets("Check List").Range("D8") = "In Process"
End If
Also note your question says cell "D6" but your code is pointing to "D8"
Upvotes: 2