2015-07-03 3 views
0

Я довольно новичок в программировании на Excel и VBA. Хотя у меня есть опыт как в Visual Basic, так и в PHP. Таким образом, понимание основ существует.Excel VBA - изменение цвета ячеек на основе события из других листов

Ничего себе, это трудно объяснить в хорошем смысле ... Это может быть не лучший способ решить эту проблему, но именно так я решил это прямо сейчас.

Всего 3 листа. sheet1 - резюме других листов. Sheet2, некоторые данные и пользовательский ввод. Sheet3 - Данные.

Пользователь вводит длину стального стержня в sheet2. Пользователь также добавляет другие значения, которые добавляют вес на стальной стержень. в листе 1 рассчитывается сводка нагрузок. одна из ячеек показывает только нагрузку на панель. Лист3 имеет максимальную информацию о загрузке пр. длина стального стержня. Я хочу, чтобы итоговая ячейка в листе1 была красной от значения больше максимальной загрузки в sheet3.

Так что я хочу, чтобы макрос запускался каждый раз, когда ячейка в листе1 менялась при вводе пользователем в sheet2. поиск макросов и перекрестные проверки значений и изменение цвета ячейки в листе1.

Что такое хороший способ решения этого вопроса?

Чтобы сделать это несколько сложнее, пользователь может выбирать из 4 отдельных стальных стержней с различными данными погрузки.

, чтобы настроить тест, который я сделал на тестовом листе, но я не могу заставить макрос работать по какой-то причине.

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim KeyCells As Range 

Set KeyCells = Range("E4") 

If Not Application.Intersect(KeyCells, Range(Target.Address)) _ 
     Is Nothing Then 

    If Range("E4").Value > Range("E14").Value Then 
     Range("E4").Interior.ColorIndex = 37 
    End If 

End If 

End Sub

+0

Я думаю, что макрос будет работать до тех пор, как вы получили изменение значения ячейки в первой рабочей таблице (резюме) –

+1

Вы должны попробовать ** Условное форматирование **. Быстрее, дешевле в ресурсах и проще модифицировать позже для других пользователей. – vacip

ответ

2

Вы сравниваете значение ячеек в одном листе. Вам нужно указать, какую ячейку рабочего листа сравнить. Кроме того, вам необходимо установить код для изменения рабочего листа (сводка) и изменить значение ячейки (сводка).

лист активирован:

Private Sub Worksheet_Activate() 
Dim MyWorkbook As Workbook 
Dim MySummary As Worksheet 
Dim MyData As Worksheet 

Set MyWorkbook = ActiveWorkbook 
Set MySummary = MyWorkbook.Sheets("Summary") 
Set MyData = MyWorkbook.Sheets("Data") 

    If MySummary.Range("E4").Value > MyData.Range("E14").Value Then 
     MySummary.Range("E4").Interior.ColorIndex = 37 
     Else 
     MySummary.Range("E4").Interior.ColorIndex = 0 
    End If 
End Sub 

листа изменение значения:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim MyWorkbook As Workbook 
Dim MySummary As Worksheet 
Dim MyData As Worksheet 

Set MyWorkbook = ActiveWorkbook 
Set MySummary = MyWorkbook.Sheets("Summary") 
Set MyData = MyWorkbook.Sheets("Data") 

    If MySummary.Range("E4").Value > MyData.Range("E14").Value Then 
     MySummary.Range("E4").Interior.ColorIndex = 37 
     Else 
     MySummary.Range("E4").Interior.ColorIndex = 0 
    End If 

End Sub 
Смежные вопросы