Событие Excel workheet_change

Мне интересно, можете ли вы помочь мне с листом work_et_Change для двух разных целей.

МОЙ код:

Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:A50")) Is Nothing Then Exit Sub Range("A1:A50").Copy ThisWorkbook.Sheets(2).Range("B1") End Sub 

И он работает, всякий раз, когда anytjing обновляется в столбце A, он обновляется и копируется в столбце B (рабочий лист 2). Теперь проблема заключается в том, что я хочу добавить другую цель, B1: B50, и только если эта цель имеет в ней слово SUM, она должна копировать и обновлять. Проблема в том, что она копирует, но ничего не обновляет. Мой код для этого:

 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:A50, B1:B50")) Is Nothing Then Exit Sub If Target.Address = "TOTAL" Then Range("A1:A50").Copy ThisWorkbook.Sheets(2).Range("B1") end if End Sub 

Что я делаю?

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

Кроме того, Target.Address никогда не будет «TOTAL», поэтому эта логика не будет работать:

 If Target.Address = "TOTAL" 

Имея это в виду, я бы сделал что-то подобное. Создайте отдельную процедуру для каждого диапазона (столбец A или B). Затем используйте событие Worksheet_Change чтобы определить, какую процедуру вызывать:

 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:A50, B1:B50")) Is Nothing Then Exit Sub If Target.Column = 1 Then Call RangeA(Target) If Target.Column = 2 Then Call RangeB(Target) End Sub Sub RangeA(Target as Range) Range("A1:A50").Copy ThisWorkbook.Sheets(2).Range("B1") End Sub Sub RangeB(Target As Range) 'Here, you put the code that you want to run when Target is in column B End Sub 

Поскольку я не совсем уверен, что вы собираетесь делать с колонкой B, я оставил процедуру RangeB пустой на данный момент. Вы можете изменить эту процедуру, чтобы делать все, что хотите, на основе изменения цели в диапазоне B1: B50.

Как заполняется столбец B?

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:A50")) Is Nothing Then Range("A1:A50").Copy ThisWorkbook.Sheets(2).Range("B1") End If If Not Intersect(Target, Range("B1:B50")) Is Nothing Then If Target = "Total" Then MsgBox Target.Address 'do something here End If End If End Sub 
  • Сумма функции значений на строку, которые расположены во многих столбцах с тем же именем
  • Как я могу извлечь значение точки данных из всплывающих подсказок графика рассеяния?
  • Объедините текст, замените ссылку и оцените формулу
  • Добавить рабочую книгу Excel в приложение VB .NET
  • блокировка в столбце vlookup
  • Excel для создания нового листа каждые n строк
  • Сделать Excel Slicers Перейти к значениям, выбранным другими slicers
  • Копировать стиль / формат одной ячейки в другую ячейку Excel Interop C #
  • Данные отсутствуют на листе Excel
  • Формула Excel - Сравнить две таблицы для значений
  • Excel: поиск строки в столбце 1 и соответствие значению в столбце 2
  • Давайте будем гением компьютера.