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 Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Laufzeitfehler 1004: Anwendungs- oder objektorient


Betrifft: Laufzeitfehler 1004: Anwendungs- oder objektorient von: Stefan
Geschrieben am: 18.09.2019 14:30:17

Hallo Leute,

ich bekomme auf einmal einen Laufzeitfehler 1004: Anwendungs- oder objektorientierter Fehler !
Der nachfolgen Code ging vorher aber immer. Datensätze werden aus einer UF mit Textboxen zurück in die jeweilige Zeile geschriben.

Vlt. weis einer weiter, ich sehe den fehler leider nicht !

besten Dank !
stefan

Private Sub cmdÄndern_Click()                   'Daten Eingaben Ändern
          Call sndPlaySound32("C:\Vereinsordner\Media\Windows Navigation Start.wav", 1)
              ActiveSheet.Unprotect "Havel59"              '
          If TextBox2 = "" Then                           '
              MsgBox "Es wurden keine Daten ausgewählt !", _
              vbInformation, " Hinweis für " & Application.UserName
          Exit Sub                                        'Wenn Dann Beenden
          End If                                          'Wenn Dann Ende
              Application.ScreenUpdating = False          '
              Cells(i, 5) = ComboBox1                   'E Anrede
              Cells(i, 6) = TextBox2                    'F Name
              Cells(i, 7) = TextBox3                    'G Vorname
              Cells(i, 8) = TextBox4                    'H Straße
              Cells(i, 9) = TextBox5                    'I PLZ
              Cells(i, 10) = TextBox6                   'J Ort
              Cells(i, 11) = TextBox7                   'K Geb.
              Cells(i, 12) = TextBox8                   'L Alter
              Cells(i, 13) = TextBox9                   'M KAVO
              Cells(i, 14) = ComboBox3                  'N Status
              Cells(i, 15) = TextBox22                  'O Eintritt
              Cells(i, 16) = TextBox25                  'P Jup.
              Cells(i, 17) = TextBox24                  'Q Austritt
              Cells(i, 18) = TextBox17                  'R Land
              Cells(i, 19) = TextBox18                  'S Telefon
              Cells(i, 20) = TextBox16                  'T Handy
              Cells(i, 21) = TextBox19                  'U Fax
              Cells(i, 22) = TextBox20                  'V EMail
              Cells(i, 23) = TextBox23                  'W Liegeplatz
              Cells(i, 24) = TextBox11                  'X 1. Datum
              Cells(i, 25) = ComboBox4                  'Y 1. Auszeichnung
              Cells(i, 26) = TextBox26                  'Z 2. Datum
              Cells(i, 27) = ComboBox5                  'AA 2. Auszeichnung
              Cells(i, 28) = TextBox27                  'AB 3. Datum
              Cells(i, 29) = ComboBox6                  'AC 3. Auszeichnung
              Cells(i, 30) = TextBox28                  'AD 4. Datum
              Cells(i, 31) = ComboBox7                  'AE 4. Auszeichnung
              Cells(i, 32) = TextBox29                  'AF 5. Datum
              Cells(i, 33) = ComboBox8                  'AG 5. Auszeichnung
              Cells(i, 34) = TextBox30                  'AH 6. Datum
              Cells(i, 35) = ComboBox9                  'AI 6. Auszeichnung
              Cells(i, 36) = TextBox31                  'AJ Bemerkung
              Cells(i, 37) = Label92                    'AK Letzte Aktualisierung
              Cells(i, 38) = ComboBox2                  'AL Geschlecht
              Range("E3:AL1003").Columns.AutoFit          'Spaltenbreite Automatik
          Dim z%, r%, s%, sj%                             '
              z = Range("F1003").End(xlUp).Row            '
          For r = 4 To z                                  '
              sj = 0                                      '
          For s = Format(Cells(r, 1), "yyyy") To Format(Now(), "yyyy") '
          If s Mod 4 = 0 Then                             '
              sj = sj + 1                                 '
          End If                                          '
          Next s                                          '
              Cells(r, 12) = Int((DateDiff("d", Format(Cells(r, 11), "DD.MM.YYYY"), Now) - sj) / 365) '
              Cells(r, 16) = Int((DateDiff("d", Format(Cells(r, 15), "DD.MM.YYYY"), Now) - sj) / 365) '
          Next r                                          '
          If TextBox7 = "" Then                           '
              Cells(i, 12) = ""            '
          End If
          If TextBox9 = "" Then                           '
              Cells(i, 13) = ""            '
          End If                                          'Wenn Dann Ende
              Call ProgressBar4
              Label84.BackColor = RGB(122, 255, 100)      'grün
              Label84.ForeColor = RGB(0, 0, 0)            'schwarz
              Label84.Caption = "Datensatz wurde geändert !"
              Application.Wait (Now + TimeValue("00:00:03"))
              Label84.BackColor = &HFF0000                'blau
              Label84.ForeColor = &HFFFF&                 'gelb
              Label84.Caption = "Mitgliederverwaltung Managerment System"
              cmdSpeichern.Enabled = True
          End Sub
'Makro Ende
  

Betrifft: und in welcher Codezeile denn? o.w.T. von: 1713669.html
Geschrieben am: 18.09.2019 14:40:10


  

Betrifft: AW: und in welcher Codezeile denn? o.w.T. von: 1713674.html
Geschrieben am: 18.09.2019 14:47:14

Hallo Werner,

entschuldige, alle Cells(......)=......
er zeigt einen nach dem anderen an aber nur die !

gruß stefan

  

Betrifft: AW: und in welcher Codezeile denn? o.w.T. von: 1713675.html
Geschrieben am: 18.09.2019 14:51:26

Hallo Stefan,

keine deiner Variablen ist Dim(ensioniert), ganz schlecht.

Dann verwendest du eine Variable i, weist ihr aber (zumindest im hier gezeigten Code) keinen Wert zu. Bedeutet i = 0, und eine Zeile 0 gibt es in Excel nicht.

Cells(i, 5) = ComboBox1
Gruß Werner
  

Betrifft: AW: Kleine Gedanken Hilfe von Euch bitte von: 1713786.html
Geschrieben am: 19.09.2019 08:49:34

Hallo Werner,

Ja das stimmt ist nicht gut so aber es ist schon komisch, dass der Code vor ein paar Tagen noch einwandfrei durch lief? Ich habe auch schon anstatt i Zeile genommen und geht nicht und Dim i As Integer geht auch nicht, dann zeigt er das auch gelb als Fehler an. Die Fehler Meldungen hab ich jetzt nicht im Kopf, sitze am PAD. Muss immer zwischen Arbeit und Pausen Springen.

Könntest du mir den Anfang wie es richtig wäre aufschreiben, nicht den ganzen Code nur der Beginn wie es klappen sollte.

Lieben Dank
Stefan

  

Betrifft: AW: Kleine Gedanken Hilfe von Euch bitte von: 1713826.html
Geschrieben am: 19.09.2019 10:33:19

Hallo Stefan,

und was soll dir das jetzt bringen wenn es nicht läuft?

Private Sub cmdÄndern_Click()
   Dim i As Long, z As Long, r As Long, s As Long, sj As Long
   
   z = Range("F1003").End(xlUp).Row
   
   Call sndPlaySound32("C:\Vereinsordner\Media\Windows Navigation Start.wav", 1)
   
   ActiveSheet.Unprotect "Havel59"
   
   If TextBox2 = "" Then
   MsgBox "Es wurden keine Daten ausgewählt !", _
       vbInformation, " Hinweis für " & Application.UserName
   Exit Sub
   End If
   
   Application.ScreenUpdating = False
   Cells(i, 5) = ComboBox1
   Cells(i, 6) = TextBox2
   Cells(i, 7) = TextBox3
   Cells(i, 8) = TextBox4
   Cells(i, 9) = TextBox5
   Cells(i, 10) = TextBox6
   Cells(i, 11) = TextBox7
   Cells(i, 12) = TextBox8
   Cells(i, 13) = TextBox9
   Cells(i, 14) = ComboBox3
   Cells(i, 15) = TextBox22
   Cells(i, 16) = TextBox25
   Cells(i, 17) = TextBox24
   Cells(i, 18) = TextBox17
   Cells(i, 19) = TextBox18
   Cells(i, 20) = TextBox16
   Cells(i, 21) = TextBox19
   Cells(i, 22) = TextBox20
   Cells(i, 23) = TextBox23
   Cells(i, 24) = TextBox11
   Cells(i, 25) = ComboBox4
   Cells(i, 26) = TextBox26
   Cells(i, 27) = ComboBox5
   Cells(i, 28) = TextBox27
   Cells(i, 29) = ComboBox6
   Cells(i, 30) = TextBox28
   Cells(i, 31) = ComboBox7
   Cells(i, 32) = TextBox29
   Cells(i, 33) = ComboBox8
   Cells(i, 34) = TextBox30
   Cells(i, 35) = ComboBox9
   Cells(i, 36) = TextBox31
   Cells(i, 37) = Label92
   Cells(i, 38) = ComboBox2
   Range("E3:AL1003").Columns.AutoFit
            
   For r = 4 To z
       sj = 0
           For s = Format(Cells(r, 1), "yyyy") To Format(Now(), "yyyy")
               If s Mod 4 = 0 Then
                   sj = sj + 1
               End If
           Next s
       Cells(r, 12) = Int((DateDiff("d", Format(Cells(r, 11), "DD.MM.YYYY"), Now) - sj) / 365)
       Cells(r, 16) = Int((DateDiff("d", Format(Cells(r, 15), "DD.MM.YYYY"), Now) - sj) / 365)
   Next r
   If TextBox7 = "" Then
       Cells(i, 12) = ""
   End If
   If TextBox9 = "" Then
       Cells(i, 13) = ""
   End If
       Call ProgressBar4
       Label84.BackColor = RGB(122, 255, 100)
       Label84.ForeColor = RGB(0, 0, 0)
       Label84.Caption = "Datensatz wurde geändert !"
       Application.Wait (Now + TimeValue("00:00:03"))
       Label84.BackColor = &HFF0000
       Label84.ForeColor = &HFFFF&
       Label84.Caption = "Mitgliederverwaltung Managerment System"
       cmdSpeichern.Enabled = True
   End Sub
Noch mal:
Du sprichst im Code Zellen mit Cells(i, 5) usw. an.
Deiner Variablen i ist aber kein Wert zugewiesen, sie ist 0. Da es in Excel eine Zeile 0 aber nicht gibt läuft das in einen Fehler.

Wobei es mit dem Code in der Form sowieso keinen Sinn macht hier mit einer Laufvariablen i zu arbeiten. Die setzt man in einer Schleife ein: For i = 3 to 15 z.B., was du aber nicht machst.

Deine Variable i ändert sich in deinem Code aber nirgendwo. Wenn sie denn einen Wert hätte, dann ändert sich der nie, wozu dann also überhaupt die Variable i.

Zudem solltest du dir im Klaren darüber sein, dass der Code, wenn er denn funktionieren würde, nur dann korrekt arbeitet, wenn das Blatt, auf dem die ganze Aktion ablaufen soll, auch das Aktive Blatt ist.

Ohne deine Datei zu haben wird dir hier kaum einer weiter helfen können weil alles Spekulation ist.

Gruß Werner
  

Betrifft: AW: Hallo Werner, letzer Beitrag, dann zu u. Danke von: 1713876.html
Geschrieben am: 19.09.2019 13:00:45

Ich habe den Code damals hier im Forum so bekommen und er lief ja auch bis vor kurzem. Nochmal ich Suche mit einer Userform und Textboxen nach einen Datensatz, er findet den Datensatz in der Tabelle und zeigt ihn in der Userform an, damit ist doch das Blatt und die gefundene Zeile (i) Active. Alles geschieht auf einen Blatt. Nun möchte ich was auch immer im Datensatz ändern, schreibe das in die jeweilige Textbox und drücke ändern und nun kommt der dieser Code zu tragen s. Unten die Änderung dann in der jeweiligen Zeile und Spalte einträgt, das ist alles. Ich wurde hier erst letztens von onur und Luschi darauf hin gewiesen Zeile durch i zu ersetzen mehr nicht. Was den nun Leute ?

Private Sub cmdÄndern_Click() 
  If TextBox2 = "" Then MsgBox "Es wurden keine Daten ausgewählt !", _ vbInformation, " Hinweis fü _
  r " & Application.UserName 
  Exit Sub 
  End If 
  Application.ScreenUpdating = False 
  Cells(i, 5) = ComboBox1 'Quasi durch die vorherige Suche gefundene Zeile (i) und Spalte 5 (E)  _
  jetzt mit Textbox Inhalten ersetzen
  Cells(i, 6) = TextBox2 
  Cells(i, 7) = TextBox3 
  Cells(i, 8) = TextBox4 
  Cells(i, 9) = TextBox5 
  Cells(i, 10) = TextBox6 
  Cells(i, 11) = TextBox7 
  Cells(i, 12) = TextBox8 
  Cells(i, 13) = TextBox9 
  Cells(i, 14) = ComboBox3 
  Cells(i, 15) = TextBox22 
  Cells(i, 16) = TextBox25 
  Cells(i, 17) = TextBox24 
  Cells(i, 18) = TextBox17 
  Cells(i, 19) = TextBox18 
  Cells(i, 20) = TextBox16 
  Cells(i, 21) = TextBox19 
  Cells(i, 22) = TextBox20 
  Cells(i, 23) = TextBox23 
  Cells(i, 24) = TextBox11 
  Cells(i, 25) = ComboBox4 
  Cells(i, 26) = TextBox26 
  Cells(i, 27) = ComboBox5 
  Cells(i, 28) = TextBox27 
  Cells(i, 29) = ComboBox6 
  Cells(i, 30) = TextBox28 
  Cells(i, 31) = ComboBox7 
  Cells(i, 32) = TextBox29 
  Cells(i, 33) = ComboBox8 
  Cells(i, 34) = TextBox30 
  Cells(i, 35) = ComboBox9 
  Cells(i, 36) = TextBox31 
  Cells(i, 37) = Label92 
  Cells(i, 38) = ComboBox2 
  Range("E3:AL1003").Columns.AutoFit
  End Sub
MfG Stefan
  

Betrifft: AW: Hallo Werner, letzer Beitrag, dann zu u. Danke von: 1713877.html
Geschrieben am: 19.09.2019 13:10:21

Hallo Stefan,

auch ich noch mal:

Lade deine Datei hier hoch, alles andere ist reine Spekulation.

er findet den Datensatz in der Tabelle und zeigt ihn in der Userform an, damit ist doch das Blatt und die gefundene Zeile (i) Active
Kann (wenn du bei der Suche mit Activate das Blatt aktivierst), muss aber nicht.

Und noch mal: Mit dem Code, den du hier zeigst hat die Variable i keinen Wert und ist 0 weshalb es nicht funktionieren kann.

Ob die Variable i irgendwo als Public Variable deklariert ist und ob ihr da auch ein gültiger Wert zugewiesen wird/wurde kann ich in Ermangelung deiner Datei nicht sehen.

Gruß Werner

  

Betrifft: AW: Hi Werner, Probl. gelöst, Liste läuft wieder von: 1714204.html
Geschrieben am: 21.09.2019 14:08:25

Hallo Werner,

Habe ein Modul mit Global i As Integer angelegt und Liste läuft wieder rund.
Besten Dank dir für deine Bemühungen.
Gibt schon wieder neue Probleme HaHa.

Beste Grüße Stefan

  

Betrifft: Passwort geändert? von: 1713679.html
Geschrieben am: 18.09.2019 14:54:26

Gruß Daniel

  

Betrifft: dann würde ja ... von: 1713745.html
Geschrieben am: 18.09.2019 19:28:12

Hallo Daniel,
... eine Meldung kommen, dass das PW falsch ist.

Gruß
Rudi

Beiträge aus dem Excel-Forum zum Thema "Laufzeitfehler 1004: Anwendungs- oder objektorient"