Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1808to1812
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

Methode Cells Fehlgeschlagen

Methode Cells Fehlgeschlagen
04.02.2021 11:11:56
Benutzer
Hallo nochmal zusammen!
Hier im Forum bin ich recht neuund muss mich ersteinmal zurecht finden.
Vor einigen Stunden hatte ich meine gesamte Datei hochgeladen, ich denke das war zuviel des Guten. Daher könnte ein Admin meine zwei Posts von heute morgen löschen?!
Hier der Codeschnipsel, welcher den Fehler "Methode Cells für das Objekt _Worksheet fehlgeschlagen" verursacht. Könnt ihr mir dazu einen Tipp geben?
Viele Grüße!
Sub Schreiben()
Dim efZ As Integer
efZ = 1
With Worksheets("Fehlerauflistung")
efZ = .Cells(5000, 1).End(xlUp).Offset(1).Row
.Cells(efZ, 1) = CInt(TextBox31)                                                         _
.Cells(efZ, 2) = CInt(TextBox36.Text)                                                    _
.Cells(efZ, 3) = CVar(TextBox34.Text) & "/" & CDbl(TextBox30.Text)                       _
.Cells(efZ, 4) = CVar(TextBox3.Text)                                                     _
.Cells(efZ, 5) = CLng(TextBox4.Text)                                                     _
.Cells(efZ, 6) = CVar(TextBox2.Text)                                                     _
.Cells(efZ, 7) = Format(CDate(ComboBox8 & "." & ComboBox4 & "." & ComboBox5), "dd.mm. _
yyyy")
.Cells(efZ, 8) = CDbl(TextBox32.Text)                                                    _
.Cells(efZ, 9) = ComboBox6.Text
.Cells(efZ, 10) = ComboBox1.Text                                                         _
.Cells(efZ, 11) = ComboBox2.Text                                                         _
.Cells(efZ, 12) = ComboBox7.Text                                                         _
.Cells(efZ, 13) = repstatus                                                              _
.Cells(efZ, 15) = CVar(TextBox29.Text)
.Cells(efZ, 16) = CInt(TextBox33.Text)                                                   _
End With
End Sub

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Methode Cells Fehlgeschlagen
04.02.2021 11:25:18
Nepumuk
Hallo,
ich kann keinen Fehler entdecken. Die Daten werden klaglos in die Tabelle Fehlerauflistung geschrieben.
Gruß
Nepumuk
AW: Methode Cells Fehlgeschlagen
04.02.2021 11:25:58
MRUTOR
Hallo Benutzer,
in welcher Zeile des Codes tritt denn der Fehler auf?
Wo wird denn die Variable "repstatus" deklariert und gefuellt?
Mit

efZ = .Cells(5000, 1).End(xlUp).Offset(1).Row 

willst du sicher die erste freie Zeile ermitteln. Dann solltest du das so machen:
efZ = .Cells(Rows.Count, 1).End(xlUp).Offset(1).Row 
Gruss Tor
AW: Methode Cells Fehlgeschlagen
04.02.2021 11:35:39
Benutzer
Danke für die schnelle Antwort!
Die Variable "repstatus" wird als Public nach Option Explicit deklariert.
Das Row.Count habe ich zum testen ersetzt, da ich nicht mehr als 3000 Zeilen benötigen werde aller voraussicht nach.
In dieser Zeile bleibt der Debugger stehen:
.Cells(efZ, 1) = CInt(TextBox31)
Dazu muss ich noch erwähnen dass es zwei bis drei Durchläufe in einer "Sitzung" funktioniert. Danach wird nur die erste Spalte der Zeile beschrieben und das Skript bleibt mit der besagten Fehlermeldung stehen. Dass beenden von Excel oder das ändern der Tabellenzeilen führt dabei dann auch zum einfrieren von Excel.
Anzeige
AW: Methode Cells Fehlgeschlagen
04.02.2021 11:41:25
MRUTOR
Hallo nochmal,
da ja Nepumuk schon erwaehnt hat, dass es bei ihm funktioniert, kann ich mir nur vorstellen, dass in der Textbox31 dann, wenn der Fehler auftritt, vielleicht keine Textzahl steht sondern wirklich Text. Der kann dann natuerlich mit CInt nicht in eine Zahl umgewandelt werden.
AW: Methode Cells Fehlgeschlagen
04.02.2021 11:52:53
Rudi
Hallo,
vielleicht keine Textzahl steht sondern wirklich Text.
Das ergibt aber einen Fehler 13-Typen unverträglich
Gruß
Rudi
stimmt
04.02.2021 11:58:36
MRUTOR
AW: stimmt
04.02.2021 12:02:13
Daniel
HI
vor solchen Umwandlungsaktionen von Text in Zahl besser immer absichern, ob das überhaupt möglich ist, dabei hilft IsNumeric:
IF IsNumeric(Textbox1.Text) Then ... = CInt(Textbox1.Text)
Gruß Daniel
Anzeige
'IsNumeric' erkennt mehr als numerisch an, ...
04.02.2021 12:36:23
Luc:-?
…Daniel,
als ggf als numerisch angesehen wird. So kann eine Ziffernfolge (bei dt Xl) auch ein einzelnes d, D, e, E, Komma oder mehrere Punkte bzw ggf auch Leerzeichen (zumindest, wenn diese als TsderTrennzeichen festgelegt wurden) enthalten. Datums- und ZeitFormate wdn dagg nicht als numerisch erkannt, obwohl sie mit CDate in Datums- und Zeitwerte gewandelt wdn können, die dann ebenfalls in echte Zahlen transformierbar sind (wodurch noch mehrfacher/s DoppelPkt, MinusZeichen und Schrägstrich möglich wdn).
Gruß, Luc :-?
AW: 'IsNumeric' erkennt mehr als numerisch an, ...
04.02.2021 12:48:58
Daniel
es geht nur um die Fehlervermeidung
IsNumeric(x) ergibt ein WAHR, wenn sich der Wert x per Umwandlungsfunktion CInt, CLng, CDbl, CSgn ohne Fehlerabbruch in eine Zahl wandeln lässt.
Anzeige
Das weiß ich und 'IsNumeric' korreliert ...
04.02.2021 16:07:35
Luc:-?
…mit diesen Konvertierungsfktt, Daniel,
aber d.h. ja nicht, dass dieses Ergebnis immer so erwartet wird, sondern ggf alternativ eine HexadezimalZahl oder ein Text erkannt wdn soll (If Not IsNumeric(…) Then).
Luc :-?
AW: Das weiß ich und 'IsNumeric' korreliert ...
04.02.2021 16:17:57
Daniel
und was soll ich jetzt tun Herr Oberlehrer?
Nichts, denn das war ein ergänzender Hinweis, ...
06.02.2021 19:57:44
Luc:-?
…Herr „Hilfslehrer“,
außer ggf nächstesmal dran denken… :-]
Luc :-?
AW: Das weiß ich und 'IsNumeric' korreliert ...
04.02.2021 16:17:59
Daniel
und was soll ich jetzt tun Herr Oberlehrer?
AW: Methode Cells Fehlgeschlagen
04.02.2021 11:53:13
Benutzer
Auffällig an der Problematik ist, dass die gesamte Routine 2-Mal fehlerfrei durchläuft mit unveränderten Werten in den Text- und Comboboxen und dann plötzlich nicht mehr in die Tabelle schreiben "möchte" mit dem Fehler aus dem Eröffnungspost.
Ist es möglich dass es an der 32-Bit Version liegt?
Anzeige
AW: Methode Cells Fehlgeschlagen
04.02.2021 12:01:48
MRUTOR
Habe gerade deine Datei gefunden aus dem anderen Beitrag. Habe es getestet und auch bei mir tritt dieser Fehler auf nach einigen Durchlaeufen. Merkwuerdige Sache. Kanns nicht erklaeren. Vielleicht weiss jemand anderes Rat. Uebrigens habe ich 64-bit.
Ich stell wieder auf offen.
AW: Methode Cells Fehlgeschlagen
04.02.2021 14:34:15
Benutzer
Ich vermute es hängt mit der Routine zu Befüllung der ListBox1 zusammen. Kann es da zu Komplikationen kommen? Ich bin mir nicht sicher ob Global ein "Index" der Tabelle damit gesetzt/verändert wird, wo dann die Cells-Methode Probleme bekommt die Zellen zu beschreiben.
Und ja...kann man noch etwas komprimieren und verschönern :-)
Eine andere, vielleicht simplere, Möglichkeit die Listbox mit der wachsenden Tabelle zu befüllen, fällt mir leider nicht ein.
Private Sub fülleLB1()
'Fülle ListBox mit Daten
Dim rngBereich As Range
With Sheets("Fehlerauflistung")
Set rngBereich = .Range("A2:C2", .Cells(Rows.Count, 1).End(xlUp))
If rngBereich(1, 1)  "" Then _
ListBox1.RowSource = .Name & "!" & rngBereich.Address
End With
ListBox1.ListIndex = ListBox1.ListCount - 1
End Sub

Anzeige
AW: Methode Cells Fehlgeschlagen
04.02.2021 14:54:32
ralf_b
Es köönte was damit zu tun haben das du eine Intelligente Tabelle Als Tabelle1 hast. in VBA ein Listobject.
Diese wird bei dir aber einfach übergangen und du arbeitest mit einer Cellsadressierung auf dem Blatt.
Eine leere Intel. Tabelle wie bei dir wird mit eine leeren Datenzeile angezeigt. Aber der Zelenzähler des Listobjects ist hier noch 0 .
Ermittelung der letzten gefüllten Zelle mittels cells.rows count usw. funktioniert bei Listobjects nicht. Also schreibst du in die erste leere Zelle unterhalb deiner intelligenten Tabelle. Alses schön und gut.
Wenn du aber von Hand eine Datenzeile "in" der Tabelle1 füllst, dann erkennt Excel offenbar das du in den folgenden Einfügeoperationen mit der intelligenten Tabelle kollidierst oder in Berührung kommst.
Vorschlag: wandle Tabelle1 in einen normalen Bereich um und teste mal ob der Fehler auftaucht. Oder nutze die Tabelle1 als intelligente Tabelle und Verwende entsprechende Bezüge um die WErte din die Tabelle zu schreiben.
gruß
rb
Anzeige
AW: Methode Cells Fehlgeschlagen
04.02.2021 14:55:43
Nepumuk
Hallo,
würde ich so machen:
Private Sub fülleLB1()
    
    'Fülle ListBox mit Daten
    
    Dim rngBereich As Range
    
    With Worksheets("Fehlerauflistung")
        
        Set rngBereich = .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 3))
        
    End With
    
    If Not IsEmpty(rngBereich.Cells(1, 1).Value) Then
        
        ListBox1.List = rngBereich.Value
        ListBox1.ListIndex = ListBox1.ListCount - 1
        
    End If
    
    Set rngBereich = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Methode Cells Fehlgeschlagen
05.02.2021 06:58:47
Benutzer
Hallo Nepumuk,
es ist richtg, die Tabelle 1 auf dem Blatt Fehlerauflistung wird als intelligente Tabelle ausgeführt.
Habe meinen Code entsprechend angepasst und das Befüllen klappt jetzt soweit.
Damit finde ich die letzte freie Zeile der Tabelle:

letzteZeile = Range("Tabelle1").Row + Range("Tabelle1").Rows.Count - 1
efZ = letzteZeile + 1
Deinen Code zu Befüllung der ListBox versuche ich derweil noch zu verinnerlichen und anzupassen.
Danke schonmal dafür und allen anderen für die Hilfe!
AW: Methode Cells Fehlgeschlagen
05.02.2021 07:41:38
Benutzer
Hallo nochmal Nepumuk,
eine Rückfrage habe ich doch nochmal.
Set rngBereich = .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 3))
Hier setzen wir den Bereich von A2 bis zur letzten gefüllten Zeile. Die "3" soll die Anzahl der Spalten definieren, richtig?
Leider bekomme ich keinen Header mehr eingestellt, denn dann bekomme ich einen "Zugriff verweigert" Fehler.
Anzeige
AW: Methode Cells Fehlgeschlagen
05.02.2021 07:47:18
Nepumuk
Hallo,
den Header bekommst du nur über die RowSource-Eigenschaft.
Gruß
Nepumuk
AW: Methode Cells Fehlgeschlagen
05.02.2021 08:11:49
Daniel
Hi
Die 3 ist nicht die Anzahl der Spalten, sondern die Spaltennummer der letzten (rechten) Spalte des Zelllbereichs.
Nur wenn die Spaltennummer der linken Spalte gleich 1 ist, entspricht dies auch der Anzahl Spalten.
Hast du für die linke Spalte eine höhere Spaltennummer, ist die Anzahl der Spalten geringer.
Für den Header:
Wie Nepumuk schon schrieb, wenn du mit Header arbeiten willst, musst du die Listbox befüllen, indem du die Adresse des Bereichs in die Eigenschaft RowSource schreibst.
Also statt
Listbox1.List = rngBereich.Value

Dann
Listbox1.RowSource = "'" & rngBereich.Worksheet.Name & "'!" & rngBereich.Address

Gruß Daniel
Anzeige
AW: Methode Cells Fehlgeschlagen
05.02.2021 12:00:08
Benutzer
Hallo Daniel,
Listbox1.RowSource = "'" & rngBereich.Worksheet.Name & "'!" & rngBereich.Address
Damit habe ich zwar wieder die Header, jedoch kommt es dann im Bereich der Cells-Methode wieder zu Problemen.
"Manuell" bekomme ich den Header nicht gefüllt ohne den Fehler "Zugriff verweigert". So tief stecke ich in VBA nicht drin um die genaue Ursache dafür zu finden bzw. zu umgehen.
Jedoch bin ich sehr interessiert an den Abläufen und auch neues zu lernen.
AW: Methode Cells Fehlgeschlagen
05.02.2021 12:10:15
Daniel
kannst du mal ne Beispieldatei hochladen, mit der man das nachvollziehen kann?
wenns mit dem Header nicht klappt, erstelle ich die Überschrift dadurch, dass ich eine zweite Listbox erstelle, mit der gleichen Anzahl an Spalten und den gleichen Spaltenbreiten und diese Listbox dann mit einer einzigen Datenzeile, nämlich den Überschriften, befülle.
klappt ganz gut, allerdings nur dann wenn die eigentliche Listbox so breit ist, dass sie ohne horizontales scrolling auskommt.
Gruß Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige