#include <Excel.au3>
$oExcel = _Excel_Open()
$oBook = _Excel_BookOpen($oExcel, @ScriptDir & "/1.xls") ; Открываем файл
$oShape = $oBook.ActiveSheet.Shapes("Овал 2")
$isSelected = False ; Переменная для проверки выделенности
$iCount = _Excel_RangeRead($oBook, $oBook.ActiveSheet, "B5") ; Читаем ячейку в переменную
If Not IsNumber($iCount) Then $iCount = 0
While Sleep(200)
If _Check($oShape, $isSelected) Then ; Если фигура только что выделена, возвращает True
$iCount += 1 ; Увеличиваем количество
_Excel_RangeWrite($oBook, $oBook.ActiveSheet, $iCount, "B5") ; И записываем новое число
ConsoleWrite("Записали " & $iCount & @CRLF)
EndIf
WEnd
Func _Check($oShape, ByRef $isSelected)
Local $oSelection = $oExcel.Selection ; Проверяем есть ли выделенные ячейки
For $oSelect In $oSelection ; Без проверки дальше функция ломается
$isSelected = False
Return False
Next
For $oSelect In $oSelection.ShapeRange ; Если выделенных ячеек нет, проверяем выделенные фигуры
If $oSelect = $oShape Then ; Если выделена наша фигура ...
If $isSelected = True Then ; Если она уже была выделена, возвращаем False
Return False
Else ; А если не была, то ее только что выделили
$isSelected = True ; Запишем это в переменную
Return True ; И возвращаем True
EndIf
EndIf
Next
$isSelected = False ; Если дойдет сюда, значит выделена другая фигура, возвращаем False и запоминаем
Return False
EndFunc