На листе есть множество ячеек залитых разным цветом. Имеется фигура которая можно перемещать стрелками (вверх,вниз,влево,вправо). Рядом находится таблица, в которой каждому цвету ячейки - сопоставлен какой-то уникальный текст.
Как макросом вывести в ячейку G6 - цвет ячейки, которая находится точно под центром фигуры, а в ячейку H6 - соответствующий этому цвету текст ? (но обновление этих данных нужно не сразу, а лишь каждые несколько ходов, количество которых указано в ячейке G5)
Здравствуйте. помогите решить вопрос.
На листе есть множество ячеек залитых разным цветом. Имеется фигура которая можно перемещать стрелками (вверх,вниз,влево,вправо). Рядом находится таблица, в которой каждому цвету ячейки - сопоставлен какой-то уникальный текст.
Как макросом вывести в ячейку G6 - цвет ячейки, которая находится точно под центром фигуры, а в ячейку H6 - соответствующий этому цвету текст ? (но обновление этих данных нужно не сразу, а лишь каждые несколько ходов, количество которых указано в ячейке G5)Dalm
Может Вам лучше привязаться к активной ячейке, и повесить на событие Worksheet_SelectionChange, а то лень разбираться с Вашими задумками [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("B5:P10")) Is Nothing Then [a1].Interior.ColorIndex = Target.Interior.ColorIndex With ActiveSheet.Shapes.Range("Овал 1") .Left = Target.Left + Target.Width / 2 - .Width / 2 .Top = Target.Top + Target.Height / 2 - .Height / 2 End With End If End Sub
[/vba]
см. файл Активную ячейку перемещайте стрелками на клавиатуре, если активная ячейка в диапазоне В5:Р10 то в А1 изменяется цвет
Может Вам лучше привязаться к активной ячейке, и повесить на событие Worksheet_SelectionChange, а то лень разбираться с Вашими задумками [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("B5:P10")) Is Nothing Then [a1].Interior.ColorIndex = Target.Interior.ColorIndex With ActiveSheet.Shapes.Range("Овал 1") .Left = Target.Left + Target.Width / 2 - .Width / 2 .Top = Target.Top + Target.Height / 2 - .Height / 2 End With End If End Sub
[/vba]
см. файл Активную ячейку перемещайте стрелками на клавиатуре, если активная ячейка в диапазоне В5:Р10 то в А1 изменяется цветmsi2102
Public nstep As Long Public Sub GetColor() Dim x, y, shp As Shape, r As Range, cell As Range Application.ScreenUpdating = False nstep = nstep + 1 If nstep >= Range("G5") Then With ActiveSheet.Shapes.Range(Array("Ãðóïïà 4")) x = .Left + .Width / 2 y = .Top + .Height / 2 End With Set shp = ActiveSheet.Shapes.AddShape(msoShapeOval, x, y, 1, 1) Set r = shp.TopLeftCell shp.Delete Range("G6").Interior.Color = r.Interior.Color nstep = 0 For Each cell In Range("BK4:BK15") If cell.Interior.Color = r.Interior.Color Then Range("H6") = cell.Offset(, 1): Exit For Next cell End If Application.ScreenUpdating = True End Sub
[/vba] и вызвать при нажатии на любую из нарисованных стрелок
да пожалуйста) [vba]
Код
Public nstep As Long Public Sub GetColor() Dim x, y, shp As Shape, r As Range, cell As Range Application.ScreenUpdating = False nstep = nstep + 1 If nstep >= Range("G5") Then With ActiveSheet.Shapes.Range(Array("Ãðóïïà 4")) x = .Left + .Width / 2 y = .Top + .Height / 2 End With Set shp = ActiveSheet.Shapes.AddShape(msoShapeOval, x, y, 1, 1) Set r = shp.TopLeftCell shp.Delete Range("G6").Interior.Color = r.Interior.Color nstep = 0 For Each cell In Range("BK4:BK15") If cell.Interior.Color = r.Interior.Color Then Range("H6") = cell.Offset(, 1): Exit For Next cell End If Application.ScreenUpdating = True End Sub
[/vba] и вызвать при нажатии на любую из нарисованных стрелокPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816