Что нового

Реакция на выделение фигуры в экселе

Димитрий

Новичок
Сообщения
3
Репутация
0
Здравствуйте.
Подскажите такую вещь.

Открыт файл 1.xls.
В нем две фигуры "Овал 1" и "Овал 2".
Как скриптом автоит - при выделении фигуры "Овал 2" - добавлять 1 в ячейку B5 того же файла ?
 

Вложения

  • 13,3 КБ Просмотры: 1

gunter123

Продвинутый
Сообщения
157
Репутация
67
Привет, а что значит добавить 1 в ячейку? Будем считать, что надо увеличить число на 1 :scratch:
Код:
#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
 
Верх