Excel VBA - обновление нескольких ячеек на основе изменения в одной ячейке - PullRequest
0 голосов
/ 15 апреля 2009

Я хочу заполнить диапазон ячеек в Excel, когда другой изменится.

У меня есть макрос, который может получить сведения о клиенте из другой основной рабочей книги (WB2) на основе номера проекта. Номера проектов указаны в списке WB1. Когда пользователь выбирает номер проекта из WB1, мне нужно заполнить ячейки в диапазоне H9: H15 (в WB1) данными клиента. Я использую событие worksheet_change, чтобы вызвать это.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$15" Then
        Call modInvoiceFiller.FillCustomerDetails
    End If
End Sub

С этим кодом обновление не происходит. Если я запускаю процедуру вручную, она заполняет необходимые данные. Может ли кто-нибудь помочь, пожалуйста?

С уважением, Прабху

Ответы [ 2 ]

1 голос
/ 15 апреля 2009

Несколько вещей для проверки:

  • Реализовали ли вы Worksheet_Change на листе, который содержит номера проектов?
  • Если вы удалите свой код modInvoiceFiller.FillCustomerDetails и замените его вызовом msgbox, выполняется ли этот код?
1 голос
/ 15 апреля 2009

Это прекрасно работает для меня. Вы уверены, что макрос прикреплен к правильному листу, а не к книге (или, что еще хуже, в модуле)?

Простой способ определить это:

Private Sub Worksheet_Change(ByVal Target As Range)
    MsgBox Target.Address
    If Target.Address = "$A$15" Then
        MsgBox "XX " & Target.Address
    End If
End Sub

и убедитесь, что сообщение появляется при изменении любой ячейки (включая значение, которое вы должны проверить в своем операторе if), а также убедитесь, что вы получаете два сообщения при изменении ячейки A15.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...