Excel-VBA-Ereignis-Handler

1) Kann mir bitte jemand sagen, was das Problem sein könnte, mit diesem code?

2.) brauche ich diesen code eigentlich ausgeführt auf einem Arbeitsblatt zu aktualisieren, aber @ erstmaligen laden der Arbeitsmappe, ich bin ein update ausführen mit dem Workbook_Open event-handler. Wird dies nicht auslösen meine Worksheet_Change event? Gibt es eine Möglichkeit, dies zu vermeiden

Private Sub Worksheet_Change(ByVal Target As Range)

Dim ws As Worksheet
Dim rowCount As Integer

Set Worksheet = "datasheet"
Set rowCount = ws.Cells(Rows.Count, "A").End(xlUp)

If Not Intersect(Target, Range("M3:M" & CStr(rowCount))) Is Nothing Then
   MsgBox ("Hi")
End If
Else
If Not Intersect(Target, Range("T3:T" & CStr(rowCount))) Is Nothing Then
   MsgBox ("Hi")
End If
Else
If Not Intersect(Target, Range("X3:X" & CStr(rowCount))) Is Nothing Then
   MsgBox ("Hi")
End If
Else
If Not Intersect(Target, Range("AB3:AB" & CStr(rowCount))) Is Nothing Then
   MsgBox ("Hi")
End If
Else
If Not Intersect(Target, Range("AI3:AI" & CStr(rowCount))) Is Nothing Then
   MsgBox ("Hi")
End If

End Sub

Ich bin immer eine Compiler-Fehlermeldung "Objekt erforderlich" wenn ich meine Daten ändern mit dieser handler. Auf der anderen Seite, wenn ich die Werte statt rowcount, bekomme ich keine Probleme.

  • Set rowCount = ws.Cells(Rows.Count, "A").End(xlUp) rowCount ist nicht ein Objekt, sondern eine variable. Verwenden rowCount = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
  • Und verwenden Dim rowCount As Long - es sind mehr Zeilen in einem Arbeitsblatt als eine Integer halten kann
  • Guter Punkt, @Chris. :@user1638796: Bezüglich deiner 2. Frage. Sie können verwenden eine öffentliche variable zu prüfen, für die worksheet_open Veranstaltung und dann zu vermeiden, das change-Ereignis.
  • Sind Sie mit dem code aus dem sheets("Datenblatt") code-Bereich?
InformationsquelleAutor Vivek | 2012-10-23
Schreibe einen Kommentar