Cells-Eigenschaft verursacht Laufzeitfehler '1004'

0

Ich erhalte immer die Anwendung definiert oder Objekt definiert Fehler und die Codes in ** wird hervorgehoben. Wie kann ich das beheben?

 Private Sub Update_Click()
  answer = MsgBox("Are you sure you want to update the Staff Record?", 
  vbYesNo + vbQuestion, "Update Staff Record")
  If answer = vbYes Then
    *Cells(Row, 1) = TextBox6.Text*
    Cells(Row, 2) = TextBox1.Text
    Cells(Row, 3) = TextBox2.Text
    Cells(Row, 4) = TextBox3.Text
    Cells(Row, 5) = ComboBox1.Text
    Cells(Row, 6) = ComboBox2.Text
    Cells(Row, 7) = TextBox4.Text
    Cells(Row, 8) = ComboBox3.Text
    Cells(Row, 9) = TextBox5.Text
 End If
End Sub
kae
quelle
Sie vermissen den Kontext hier, Cellskönnen nicht alleine verwendet werden. Versuchen Sie etwas wie ActiveSheet.Cells(.... Und was ist der Wert von Row?
Máté Juhász
In der letzten Zeit wurden viele solcher Fragen gestellt, und ich denke, diese Frage ist eine mögliche Kopie von superuser.com/questions/1127224 . ☺
Rajesh S
@ RajeshS, um ein Duplikat vorzuschlagen, muss die Zielfrage mindestens eine Antwort haben.
Twisty Imitator

Antworten:

0

Sie erhalten eine Fehlermeldung, weil Sie keinen Wert für die RowVariable definiert haben. Mach das so:

Row = value

Wo valueist eine Ganzzahl, die die Arbeitsblattzeile angibt, auf die alle Ihre Cells-Anweisungen angewendet werden sollen?

Wenn sich Ihr Code beispielsweise auf Zeile 2 auswirken sollte, sieht Ihr Code folgendermaßen aus:

Private Sub Update_Click()
  Row = 2
  answer = MsgBox("Are you sure you want to update the Staff Record?", 
  vbYesNo + vbQuestion, "Update Staff Record")
  If answer = vbYes Then
    Cells(Row, 1) = TextBox6.Text
    Cells(Row, 2) = TextBox1.Text
    Cells(Row, 3) = TextBox2.Text
    Cells(Row, 4) = TextBox3.Text
    Cells(Row, 5) = ComboBox1.Text
    Cells(Row, 6) = ComboBox2.Text
    Cells(Row, 7) = TextBox4.Text
    Cells(Row, 8) = ComboBox3.Text
    Cells(Row, 9) = TextBox5.Text
 End If
End Sub

Im Folgenden finden Sie eine übersichtlichere Möglichkeit, die MsgBox-Funktion zum Ausführen von Code basierend auf der Antwort des Benutzers zu verwenden:

If MsgBox("Are you sure you want to update the Staff Record?", _
  vbYesNo + vbQuestion, "Update Staff Record") = vbYes Then
    *run this if user clicks Yes*
End If

Bei diesem Ansatz wird die Antwort des Benutzers nicht in einer Variablen gespeichert, sondern separat getestet. Stattdessen wird dasselbe in einer Codezeile ausgeführt. (Wenn Sie jedoch die Antwort des Benutzers später in Ihrem Code erneut verwenden müssen, ist das Speichern in einer Variablen die bessere Wahl.)

Twisty Imitator
quelle