2009-04-15 5 views
0

Je veux remplir une plage de cellules dans Excel, lorsqu'une autre change.Excel VBA - Mise à jour de plusieurs cellules basée sur un changement dans une cellule

J'ai une macro qui peut récupérer des détails de client d'un autre classeur principal (WB2), basé sur le numéro de projet. Les numéros de projet sont en WB1 sous forme de liste. Au fur et à mesure que l'utilisateur sélectionne un numéro de projet à partir de WB1, j'ai besoin de remplir les cellules dans la plage de H9: H15 (dans WB1) avec les détails du client. J'utilise l'événement worksheet_change pour déclencher cela.

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

Avec ce code, aucune mise à jour ne se produit. Si j'exécute la procédure manuellement, cela remplit les détails requis. Quelqu'un pourrait-il m'aider?

Cordialement, Prabhu

Répondre

1

Cela fonctionne bien pour moi. Etes-vous sûr que la macro est attachée à la bonne feuille de calcul plutôt que le classeur (ou pire, dans un module)?

Un moyen facile de dire est de changer à:

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 

et assurez-vous un message apparaît lorsque vous modifiez une cellule (y compris la valeur que vous devriez vérifier dans votre instruction if), et assurez-vous également que vous obtenez deux messages lorsque vous changez la cellule A15.

1

Un couple de choses à vérifier:

  • Avez-vous mis Worksheet_Change sur la feuille contenant les numéros de projet?
  • Si vous supprimez votre code modInvoiceFiller.FillCustomerDetails et le remplacez par un appel msgbox, le code est-il exécuté?
Questions connexes