Ich habe Code für ein Befehlsschaltflächenklickereignis, das Fehler 91 hält. Wenn ich den Code durchtrete, wird der Fehler direkt nach dem 'Set findvalue 'Code wird ausgeführt. Siehe Codefragment unten. Ich kann es bei der Überprüfung des Codes selbst nicht herausfinden.UserForm Befehlsschaltfläche Code - Fehler 91: Objektvariable oder Mit Blockvariable nicht festgelegt
'findvalue' wird als Bereichsobjekt dimensioniert. 'DataSH' ist das Arbeitsblatt, in dem die Stammdatentabelle beginnend mit der Spalte für Record ID (Spalte B) existiert. Die Benutzerformularelemente werden auf ihre jeweiligen Spalten in der Datentabelle auf DataSH festgelegt.
Private Sub cmdEdit_Click()
'declare the variables
Dim findvalue As Range
Dim cNum As Integer
Dim DataSH As Worksheet
'error handling
On Error GoTo errHandler:
'hold in memory and stop screen flicker
Application.ScreenUpdating = False
Set DataSH = Sheet1
das Click-Ereignis-Unterprogramm, daß diese Schnipsel aus genommen wird, ist Setup der entsprechende Spalt der Daten der Zeile für die ausgewählten Daten ID (Zeilennummer identifier) in DatAsh basierend auf dem Wert in den UF-Elementen zu aktualisieren (dh geänderte oder gelöschte Werte). Der Punkt ist, die Stammdatentabelle auf DataSH mit Änderungen zu aktualisieren, die in den UF-Elementen (Textfeldern und Kombinationsfeldern) vorgenommen werden.
Set findvalue = DataSH.Range("B:B"). _
Find(What:=Me.tbRecID.Value, LookIn:=xlValues, LookAt:=xlWhole)
'update the values
findvalue = tbRecID.Value
findvalue.Offset(0, 1) = tbRecDate.Value
findvalue.Offset(0, 2) = cmbRecLoc.Value
findvalue.Offset(0, 3) = cmbRecCust.Value
findvalue.Offset(0, 4) = tbRecAmt.Value
findvalue.Offset(0, 5) = cmbRecComm.Value
findvalue.Offset(0, 6) = cmbRecPrin.Value
findvalue.Offset(0, 7) = tbRecTerr.Value
findvalue.Offset(0, 8) = tbRecRep.Value
Sie setzen findvalue die Set-Anweisung verwenden, und dann versucht, es einfach einen anderen Wert zuweisen. – Rdster
@Rdster, aber das sollte keinen Fehler auslösen, da es gerade den aktuellen "findvalue" -Wert bestätigt – user3598756
@Rdster Die Textbox und die Kombinationsfeldelemente werden gefüllt, sobald ein Datensatz doppelt geklickt wird (eine separate Subroutine) in einer Listbox (gezogen aus der Datentabelle auf DataSH) auf der gleichen UF. 'findvalue' wird auf die Datensatz-ID gesetzt, die bei diesem Ereignis in das Textelement tbRecID eingefügt wird. Der Rest des Codes soll den Wert aus den UF-Elementen (nämlich denjenigen, die geändert wurden) an das entsprechende Feld in der DataSH-Tabelle (und damit an das Listenfeld) zurückgeben, wobei das Objekt 'findvalue' als Referenzpunkt verwendet wird. Zumindest denke ich, dass ich das richtig erklärt habe. –