Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Fehler1004 im Code

Betrifft: Fehler1004 im Code von: Alexa
Geschrieben am: 04.09.2014 07:30:40

Guten morgen,
ich habe in folgendem Programm einen Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler...

kann mir jemand sagen warum?

Vielen Dank

Lg Alexa

Private Sub CommandButton1_Click()
Dim letzte_volle_zeile As Integer
Dim gesuchte_zeile As Integer
Dim i As Integer
letzte_volle_zeile = Sheets("daten").Range("E65536").End(xlUp).Offset(1, 0).Row - 1
For i = 2 To letzte_volle_zeile
If (Cells(i, 5) = TextBox9.Text) Then
gesuchte_zeile = i
End If
Next

If (gesuchte_zeile = 0) Then
MsgBox "Fehler!"
End If

Sheets("Daten").Cells(gesuchte_zeile, 5) = TextBox9.Text
Sheets("Daten").Cells(gesuchte_zeile, 62) = TextBox10.Text
Sheets("Daten").Cells(gesuchte_zeile, 65) = TextBox11.Text
Sheets("Daten").Cells(gesuchte_zeile, 66) = TextBox12.Text
Sheets("Daten").Cells(gesuchte_zeile, 77) = TextBox13.Text
Sheets("Daten").Cells(gesuchte_zeile, 63) = ComboBox1.Text
Sheets("Daten").Cells(gesuchte_zeile, 64) = ComboBox2.Text
Sheets("Daten").Cells(gesuchte_zeile, 68) = ComboBox4.Text
Unload Me
End Sub

  

Betrifft: kommt nach der Msgbox? von: Matthias L
Geschrieben am: 04.09.2014 07:43:27

Hallo

Setz mal nach
MsgBox "Fehler!"
ein
Exit Sub

Anscheinend hat ja die Varialble den Wert 0 und eine Zeile 0 gibts ja nicht

Gruß Matthias


  

Betrifft: AW: Fehler1004 im Code von: Hajo_Zi
Geschrieben am: 04.09.2014 07:46:40

Hallo Alexa,

warum zu einem Problem mehrere Beitrage.
Schreibe das End If vor Unload Me

GrußformelHomepage


  

Betrifft: AW: Fehler1004 im Code von: Alexa
Geschrieben am: 04.09.2014 08:01:20

Danke ihr beiden, das Exit sub hat funktioniert;-)

@ Hajo:Ich schreibe mehrere Threads, weil mir hier gesagt wurde, dass ich des machen soll, weil die Unterhaltungen sonst zu lang werden...

Grüße

Alexa


  

Betrifft: AW: Fehler1004 im Code von: Hajo_Zi
Geschrieben am: 04.09.2014 08:05:57

Hallo Alexa,

Du hast Dabei beachtet das Unload Me nicht mehr ausgeführt wird. Exit Sub ist meiner Meinung nach keine gute Lösung. Radikale Beendung des Makros.

Gruß Hajo


  

Betrifft: AW: Fehler1004 im Code von: Luschi
Geschrieben am: 04.09.2014 08:04:38

Hallo Alexa,

da Du uns nicht sagst, in welcher Zeile es knirscht, rate ich mal.
Die Variablen 'i' & 'letzte_volle_zeile' ist vom Typ 'Integer' und kann somit als größten Wert '32.767' annehmen.
Liegt der letzte Wert in Spalte 'E' darüber, knallt es schon hier und stürzt ab wie die erste Ariadne-V-Rakete.
siehe: https://www.youtube.com/watch?v=kYUrqdUyEpI
Auch hier war Überschreiten der Variablen-Obergrenze die Ursache!
Mach mal ein kleines Testbeispiel für uns und wir können besser diagnostizieren und verbessern auch die For-Schleife duch die Find/FindNext-Befehle in einer Do-Loop-Schleife.

Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Fehler1004 im Code von: Alexa
Geschrieben am: 04.09.2014 14:50:22

Ich habs hinbekommen...fragt mich nicht wie, aber es funktioniert..
Vielen vielen Dank


  

Betrifft: AW: Fehler1004 im Code von: Alexa
Geschrieben am: 05.09.2014 08:05:44

Hey;-)

Gestern hat der Code doch funktioniert und heute wieder nicht...was ist da los??
Bitte helft mir!!!

Private Sub CommandButton1_Click()
Dim letzte_volle_zeile As Integer
Dim gesuchte_zeile As Integer
Dim i As Integer
letzte_volle_zeile = Sheets("daten").Range("E65536").End(xlUp).Offset(1, 0).Row - 1
For i = 2 To letzte_volle_zeile
If (Cells(i, 5) = TextBox9.Text) Then
gesuchte_zeile = i
End If
Next

If (gesuchte_zeile = 0) Then
MsgBox "Bitte gib eine schon vorhandene Versuchsnummer an!"
End If



Sheets("Daten").Cells(gesuchte_zeile, 5) = TextBox9.Text
Sheets("Daten").Cells(gesuchte_zeile, 65) = TextBox11.Text
Sheets("Daten").Cells(gesuchte_zeile, 66) = TextBox12.Text
Sheets("Daten").Cells(gesuchte_zeile, 77) = TextBox13.Text
Sheets("Daten").Cells(gesuchte_zeile, 85) = TextBox14.Text
Sheets("Daten").Cells(gesuchte_zeile, 87) = TextBox15.Text
Sheets("Daten").Cells(gesuchte_zeile, 89) = TextBox16.Text
Sheets("Daten").Cells(gesuchte_zeile, 91) = TextBox17.Text
Sheets("Daten").Cells(gesuchte_zeile, 63) = ComboBox1.Text
Sheets("Daten").Cells(gesuchte_zeile, 64) = ComboBox2.Text
Sheets("Daten").Cells(gesuchte_zeile, 68) = ComboBox4.Text

Unload Me
End Sub


Der Code springt immer in die Fehlermeldung...auch wenn der Name in Spalte E vorhanden ist...

Bitte helft!
Danke schonmal


  

Betrifft: AW: Fehler1004 im Code von: Luschi
Geschrieben am: 06.09.2014 07:19:01

Hallo Alexa,

schon Deine letzte Erfolgsmeldung:

Ich habs hinbekommen...fragt mich nicht wie, aber es funktioniert..>
klang nicht sehr vertrauenserweckend. Aber wie sollen wir helfen, wenn Du nicht sagst, was denn eigentlich passiert oder eben nicht passiert - kommt gar 'ne Fehlermeldung.
Auf meine letzte Antwort dazu hast Du ja nicht reagiert. Aber eines ist ersichtlich:

If (gesuchte_zeile = 0) Then
   MsgBox "Fehler!"
Else
   Sheets("Daten").Cells(gesuchte_zeile, 5) = TextBox9.Text
   'usw.
End If
Unload Me
Nochnals mein Rat - mit einem kleinen Testbeispiel wäre das Problem schon längst vom Tisch.

Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Fehler1004 im Code von: Alexa
Geschrieben am: 08.09.2014 09:20:47

Hey;-)

Sorry, dass ich erst jetzt antworte...
ich hab den Fehler gefunden. Ich hab die Buttons für die Eingabemasken auf den 1.Reiter geschoben...und hab bei der Abfrage
If (Cells(i, 5) = TextBox9.Text) Then
nicht geschrieben, dass er im 2. Reiter schauen soll...
If (Sheets("Daten").Cells(i, 5) = TextBox9.Text) Then
So funktionierts jetzt...

Vielen Dank für eure Hilfe;-)