2009-04-15 10 views
0

Ich möchte einen Zellbereich in Excel ausfüllen, wenn ein anderer sich ändert.Excel VBA - Mehrere Zellenaktualisierung basierend auf einer Änderung in einer Zelle

Ich habe ein Makro, das Kundendaten aus einer anderen Master-Arbeitsmappe (WB2) abrufen kann, basierend auf der Projektnummer. Projektnummern befinden sich in WB1 als Liste. Wenn der Benutzer eine Projektnummer aus WB1 auswählt, muss ich Zellen im Bereich von H9: H15 (in WB1) mit Kundendetails füllen. Ich benutze das Ereignis "cheesheet_change", um dies auszulösen.

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

Mit diesem Code passiert keine Aktualisierung. Wenn ich die Prozedur manuell ausführe, füllt sie die erforderlichen Details aus. Könnte jemand bitte helfen?

Grüße, Prabhu

Antwort

1

Das ist für mich gut funktioniert. Sind Sie sicher, dass das Makro dem rechten Arbeitsblatt und nicht der Arbeitsmappe (oder schlimmer noch, einem Modul) angehängt ist?

Eine einfache Möglichkeit, zu sagen, es zu ändern:

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 

und stellen Sie sicher, dass eine Meldung erscheint, wenn Sie eine beliebige Zelle ändern (der Wert auch Sie in Ihre if-Anweisung werden Überprüfung sollte), und Stellen Sie außerdem sicher, dass Sie zwei Nachrichten erhalten, wenn Sie Zelle A15 ändern.

1

Ein paar Dinge zu überprüfen:

  • Haben Sie Worksheet_Change auf dem Blatt durchgeführt, die die Projektnummern enthält?
  • Wenn Sie den Code modInvoiceFiller.FillCustomerDetails entfernen und durch einen msgbox-Aufruf ersetzen, wird der Code ausgeführt?
Verwandte Themen