Option Explicit
Sub evenoddconditionalformatting()
'Dim days() As String
Sheets("Sheet1").Select
ActiveSheet.Cells.ClearFormats
'get the days in the days array
Dim selectioncells As Range
Range(Range("B1"), Range("B1").End(xlToRight)).Select
Set selectioncells = selection
'MsgBox (selection.Address)
'MsgBox (selection.Count)
Dim arraylength As Integer
ReDim days(selection.Count)
'MsgBox (UBound(days))
Dim cell As Range, i As Integer
i = 1
For Each cell In selectioncells
days(i) = cell.Value
i = i + 1
Next
Dim names() As String
Range("a2", Range("a2").End(xlDown)).Select
'MsgBox (selection.Count)
'Dim arraylength As Integer
Set selectioncells = selection
ReDim names(selectioncells.Count)
'MsgBox (UBound(days))
'Dim cell As Range, i As Integer
For i = 1 To selectioncells.Count
names(i) = selectioncells(i).Value
Next
'
' For i = 1 To UBound(names)
'
' MsgBox (names(i))
'
' Next i
'
Dim dict As Object 'Declare a generic Object reference
Set dict = CreateObject("Scripting.Dictionary") 'Late Binding of the Dictionary
For i = 1 To UBound(names)
Dim key, val
key = names(i): val = Application.RandBetween(0, 1)
'Add item to VBA Dictionary
If Not dict.Exists(key) Then
dict.Add key, val
End If
Next i
'
'Debug.Print dict.Count 'Result: 1
'
For Each key In dict.Keys
Debug.Print key
Next key
'
''Print all items
'For Each val In dict.Items
' Debug.Print val
'Next val
Range("L2").Select
For Each key In dict.Keys
'Debug.Print key
ActiveCell.Value = key
ActiveCell.Offset(0, 1).Value = dict(key)
ActiveCell.Offset(1, 0).Select
Next key
Set selectioncells = Range("B2:H11")
For Each cell In selectioncells
'Debug.Print cell.End(xlToLeft).Value
'Debug.Print cell.End(xlUp).Value
Dim pos As Integer
For i = 1 To UBound(days)
If cell.End(xlUp).Value = days(i) Then
pos = i
Exit For
End If
Next i
'MsgBox (pos)
pos = pos - 1
pos = pos Mod 2
'MsgBox (pos)
Dim pos2 As Integer
For Each key In dict.Keys
'Debug.Print key
If cell.End(xlToLeft).Value = key Then
pos2 = dict(key)
Exit For
End If
Next key
'MsgBox (pos2)
If pos = pos2 Then
cell.Value = "Should be present"
Else
cell.Value = "Should be absent"
End If
Next cell
ActiveSheet.Columns.AutoFit
Dim mydate As String
mydate = Format(Date, "dddd")
Range(Range("B1"), Range("B1").End(xlToRight)).Select
Set selectioncells = selection
For Each cell In selectioncells
If mydate = cell.Value Then
Range(cell, cell.End(xlDown)).Select
Exit For
End If
Next
Set selectioncells = selection
'MsgBox (selectioncells.Address)
For Each cell In selectioncells
If cell.Value Like "*present" Then
cell.Interior.ColorIndex = 44
Else
End If
'MsgBox (cell.Value)
Next
End Sub
No comments:
Post a Comment