Есть ли простой способ создать диапазон, который не является прямоугольником, а кругом по центру ActiveCell? Я мог бы просто определять каждую строку по одному, но я надеюсь, что кто-то здесь знает более изящное решение.
Диапазон круга
Обновление:
Вот решение, на котором я остановился, благодаря помощи JvDV:
Sub revealMap(playerLocation As Range, sightDistance As Integer)
Dim search As Range, cl As Range
Dim stcol As Integer, strow As Integer
Dim endrow As Integer: endrow = 1 + sightDistance * 2
Dim endcol As Integer: endcol = 1 + sightDistance * 2
If playerLocation.row - sightDistance < 0 Then
strow = 1
endrow = endrow - playerLocation.row
Else
strow = playerLocation.row - sightDistance
End If
If playerLocation.Column - sightDistance < 0 Then
stcol = 1
endcol = endcol - playerLocation.col
Else
stcol = playerLocation.Column - sightDistance
End If
Set search = ActiveSheet.Cells(strow, stcol)
For Each cl In search.Resize(endrow, endcol)
If (Sqr((Abs(cl.row - playerLocation.row)) ^ 2 + (Abs(cl.Column - playerLocation.Column)) ^ 2) <= sightDistance) And (cl.Interior.ColorIndex = 1) Then
Worksheets("Map Ref").Cells(cl.row, cl.Column).Copy (Worksheets("World Map").Cells(cl.row, cl.Column))
End If
Next cl
End Sub