Anzeige
Archiv - Navigation
1672to1676
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Selection_Change Target Objekt nicht verfügbar

Selection_Change Target Objekt nicht verfügbar
14.02.2019 11:28:58
Andre
Hallo zusammen.
Ich habe ein bei einem Worksheet Selection_Change Event ein Verhalten, das ich mir nicht erklären kann.
Auf einem Worksheet habe ich 2 übereinander liegende Tabellen. Die untere Tabelle wird mittels WebAbfrage befüllt. Die obere Tabelle möchte ich via VBA bearbeiten.
In der unteren Tabellen füge ich mittels VBA eine Checkboxspalte ein. Diese Spalte beinhaltet keine Steuerelement Checkbox, sondern ein Checkboxsymbol via Windings Schrift. Über das Event Selection_Change ändere ich bei Select von unchecked zu checked, oder checked zu unchecked.
Auszug aus der Tabellen Klasse

Option Explicit
Private WithEvents tableWorksheet As Worksheet
Private pTable As ListObject
Dim cb_colName As String
Private Sub tableWorksheet_SelectionChange(ByVal Target As Range)
Call Me.addCheckboxColumn
Call Me.handleCheckboxColumn(Target)
End Sub

Das funktioniert auch sehr gut.
Wenn ich allerdings aus der oberen Tabelle per VBA eine Zeile lösche,

Private Sub handleDeleteButton(Target As Range)
If Target.Columns.Count = 1 And Target.Rows.Count = 1 Then
Dim isect As Range
'get selected cells of delete column
Set isect = Application.Intersect(Target, pTable.ListColumns(delete_colName). _
DataBodyRange)
If Not isect Is Nothing Then
If MsgBox("Delete Row?", vbYesNo + vbQuestion, "Delete ToDo") = vbYes Then
tableWorksheet.Rows(isect.row).Delete
End If
End If
End If
End Sub

dann tritt in der Prozedur handleCheckboxColumn(Target) ein Fehler auf.
Das Objekt Target sei kein Objekt: "Laufzeitfehler 424: Objekt erforderlich"
Prüfe ich mit isObject(Target), dann wird wahr ausgegeben. Möchte ich auf Werte von Target zugreifen, tritt der Fehler auf.
Das kuriose ist, dass alles funktioniert, wenn ich händisch eine Zeile lösche. Ich habe das Löschen auch schon als Makro aufgezeichnet und den Code inklusive Select Range getestet, führt aber zum selben Phänomen.
Bin gerade etwas ratlos, was hier passiert.
Vll. kann ja jemand helfen
VG
Andre

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selection_Change Target Objekt nicht verfügbar
14.02.2019 11:58:54
Andre
Achso:
Das hinzufügen einer Zeile via VBA funktioniert, ohne dass der Fehler auftritt:

Public Sub addNewToDo_add()
Dim newRow As ListRow
'add new row with toDo add to table
Call addEmptyRowUnderTable
Set newRow = pTable.ListRows.Add(pTable.ListRows.Count + 1, False)
newRow.Range.EntireRow.Hidden = False
Call setToDoType(newRow, "add")
Call setSyncStatus(newRow, "open")
Call setDeleteButton(newRow)
End Sub


Private Sub addEmptyRowUnderTable()
'add empty row under table
Dim lastRowOfpTable As Double
lastRowOfpTable = pTable.Range(pTable.Range.Rows.Count, 1).row
Rows(lastRowOfpTable + 1).Insert Shift:=xlDown
Rows(lastRowOfpTable + 1).ClearFormats
End Sub

Anzeige
AW: Selection_Change Target Objekt nicht verfügbar
14.02.2019 12:02:27
Andre
Und ...
Wenn ich nur das Listrow Objekt lösche funktioniert es auch. Nur wenn ich eine gesamte Zeile des Worksheets lösche erfolgt der Fehler
AW: Selection_Change Target Objekt nicht verfügbar
14.02.2019 15:20:33
onur
Was
Private Sub tableWorksheet_SelectionChange(ByVal Target As Range)
sein soll, ist mir noch schleierhaft.
AW: Selection_Change Target Objekt nicht verfügbar
14.02.2019 16:15:21
Andre
Das ist ein selbst erstellter Event Listener
siehe hier:
https://support.microsoft.com/en-us/help/213566/how-to-create-application-level-event-handlers-in-excel
Das Event an sich funktioniert ja auch.
AW: Selection_Change Target Objekt nicht verfügbar
14.02.2019 17:20:52
onur
Ist dir das normale Selection_Change-Event nicht gut genug oder warum musst du ein Eigenes basteln?
Ausserdem kann ich deiner Beschreibung nirgendwo entnehmen, dass der erste Code in einem KLASSENMODUL steht.
Poste doch mal die Dastei.
Anzeige
AW: Selection_Change Target Objekt nicht verfügbar
15.02.2019 07:51:54
Andre
Das ist ja genau das selbe Event, wie das im Worksheet Modul.
Aber, ich instantiiere die Tabellen mehrere Male auf unterschiedlichen Worksheets und müsste somit mein Code pro Tabelle pro Worksheet in selection_change schreiben. Mit dem selection Event in der Klasse brauche ich die Tabelle nur beim Start des Workbooks zu initialisieren, einmal.
Würde die gesamte Datei nur sehr ungern hochladen. Müsste dann einige Daten aus der Datei löschen, unter anderem auch die Zugangsdaten zur REST API, woher die Daten stammen; und ich bin mir unsicher, ob Excel nicht noch sämtliches versteckt cached, oder Wiederherstellungspunkte hat. Kenn mich dafür zu wenig mit Excel aus, als dass ich das guten Gewissens tun könnte.
Ich könnte euch aber die unfertigen Klassenmodule hochladen, wenns hilft.
VG
Andre
Anzeige
AW: Selection_Change Target Objekt nicht verfügbar
15.02.2019 08:45:35
onur
Für genau diesen Fall gibt es das Workbook-SheetSelectionChange-Event im Workbookmodul.
AW: Selection_Change Target Objekt nicht verfügbar
14.02.2019 18:00:37
Mullit
Hallo,
mit:
 tableWorksheet.Rows(isect.row).Delete

löscht Du ja genau die Zeile in der sich Dein Target befindet (isect = Intersect(Target...)).
Dein Target-Objekt wird also mitgelöscht...
Gruß, Mullit
AW: Selection_Change Target Objekt nicht verfügbar
15.02.2019 07:41:29
Andre
Wie kann ich das Abfangen? Das Target Objekt reagiert ja noch auf isobject(), Aber ich kann keine Eigenschaft oder Methode mehr ansprechen. Ich sehe hier keine Möglichkeit das außer mit OnError abzufangen.
AW: Selection_Change Target Objekt nicht verfügbar
15.02.2019 07:54:48
onur
Ja klar, „On Error Resume Next“ als Allheilmittel gegen besch.... Code.
Wenn du Schmerzmmittel gegen Alles mögliche nimmst, heisst das auch nicht, dass du kerngesund oder unverwundbar bist, du merkst es nur nicht mehr, wenn du verletzt bist.
Klassenmodule sollte man nur programmieren, wenn man WIRKLICH weiss, was man da tut.
Anzeige
AW: Selection_Change Target Objekt nicht verfügbar
15.02.2019 09:04:33
Andre
Genau das habe ich ja gesagt. Ich möchte nicht onerror verwenden, deshalb frage ich ja hier, wie ich den Fehler anders abfangen kann.
Und ich weiß was tue, deshalb verwende ich ja Klassenmodule und versuche ansatzweise Objektorientierung zu verwenden, auch wenn das mit VBA nur sehr rudimentär möglich ist.
Nur reagiert Excel beim Löschen der Zeile mittels VBA anders, als beim manuellen Löschen.
Das ist das eigentliche Problem.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige