Dim rPosition As Range Public HitCount As Integer Dim oSize As Integer Dim m_hits As Collection Public Property Get Position() As Range Set Position = rPosition End Property Public Property Set Position(ByVal value As Range) Set rPosition = value End Property Public Function IsHit(cell As Range, isPlayer As Boolean) As Boolean Attribute IsHit.VB_Description = "Checks if the current move is a hit" Attribute IsHit.VB_HelpID = 1 'Sample of attribute use on function level (show up in the objectbrowser(F2) --> Method --> Properties If Code.Collide(cell, Position) Then cell.Worksheet.Unprotect cell.Interior.Color = vbRed isHit = True Hits.Add cell If Hits.Count = Size Then Position.BorderAround Weight:=xlMedium End If If isPlayer Then Battleship.Cells(g_logRow, 2).value = "You get a hit on " & cell.Address & "!" Battleship.Names("PlayerHits").RefersToRange.value = Battleship.Names("PlayerHits").RefersToRange.value + 1 Else Battleship.Cells(g_logRow, 2).value = "The Computer gets a hit on " & cell.Address Battleship.Names("ComputerHits").RefersToRange.value = Battleship.Names("ComputerHits").RefersToRange.value + 1 End If g_logRow = g_logRow + 1 cell.Worksheet.Protect "" isHit = True Else isHit = False End If End Function Public Property Get Hits() As Collection Set Hits = m_hits End Property Public Property Set Hits(ByVal value As Collection) Set m_hits = value End Property Private Sub Class_Initialize() HitCount = 0 Set Hits = New Collection End Sub Public Property Get Size() As Integer Size = oSize End Property Public Property Let Size(ByVal vNewValue As Integer) oSize = vNewValue End Property