Пример "кликабельных ячеек", упомянутых в моем первом комментарии
... Если столбцы от A до K содержат данные, я бы сделал столбцы L-O интерактивными
(также различный цвет фона), используя событие SelectionChange ()
позволяет определить координаты каждой ячейки и построить
конкретные действия в зависимости от текущей строки
Поместите это Sub
в ThisWorkbook
модуль
Option Explicit
'In ThisWorkbook module - Sh parameter contains the sheet being used (ActiveSheet)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
With Target
Select Case Sh.Name
Case "Sheet1", "Sheet2", "Sheet3" 'Processing the first 3 sheets
If .Row > 1 And .CountLarge = 1 Then 'Ignore Headers & multiple cells
Select Case .Column
Case 1 To 4 'Ignore col A to D
.Interior.Color = RGB(255, 204, 204) 'Revert to initial
.Font.ColorIndex = xlAutomatic 'Default Black
Case 5 'Mouse clicked in a cell in col E
With Sh.Cells(.Row, "A") 'Change cell in same row, col A
.Interior.Color = RGB(190, 0, 0) 'Dark Red
.Font.Color = vbYellow
End With
.Interior.Color = RGB(255, 255, 204) 'Light Yellow
.Font.Color = vbRed 'current cell (in column E)
.Font.Bold = True
Case 6 'Mouse clicked in a cell in col F
With Sh.Cells(.Row, "B") 'Change cell in same row, col B
.Interior.Color = RGB(0, 0, 190) 'Dark Blue
.Font.Color = vbYellow
End With
.Interior.Color = RGB(255, 255, 204) 'Light Yellow
.Font.Color = vbRed
.Font.Bold = True
Case 7 'Mouse clicked in a cell in col G
If Len(.Value2) > 0 Then
With Sh.Cells(.Row, "C") 'Cell in same row, col B
.Interior.Color = RGB(255, 255, 0) 'vbYellow
.Font.Color = RGB(190, 0, 0) 'Dark Red
End With
End If
Case 8
.Value = Format(Now, "ddd mm-dd-yyyy")
.Font.Bold = True
.Offset(, 1).Value2 = "In Progress"
End Select
End If
Case "Sheet4", "Sheet5"
'...
End Select
End With
End Sub
.
Результат, после нажатия на отдельные ячейки в столбцах E до H
Sheet1
Sheet2
Sheet3
.
Другой способ определения текущего выбора
Option Explicit
'In Sheet1 module
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Me.UsedRange.Columns(1)) Is Nothing Then
MsgBox "Clicked cell in Column 'A', Row: " & Target.Row
End If
End Sub
Окно сообщения при нажатии Sheet1.Cell(A5)