Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Leere Zelle erzeugt Fehler 2007 bzw 13

Forumthread: Leere Zelle erzeugt Fehler 2007 bzw 13

Leere Zelle erzeugt Fehler 2007 bzw 13
21.10.2006 15:53:12
Reinhard
Hallo Wissende,
ich habe da eine Riesendatei (5MB), schön farbig und mit Formeln und bed. Formatierung gespickt. Sie hat 3 Blätter.
Nun wollte ich mal all das rauswerfen um zu sehen wie klein sie wird wenn ich die Formeln usw. auf Vba umstelle. Die erwähnten Dinge zu löschen und dann das jeweilige Blatt in eine leere Datei zu kopieren scheiterte bei 2 der 3 Blätter, Excel verschwand grußlos vom Bildschirm. Ich mutmaße mein Arbeitsspeicher ist zu klein o.ä. weil es ja immer mit dem einen Blatt problemlos klappte (es hat nur 150000 benutze Zellen, die anderen 6 Mio. Deshalb das nachstehende Makro.
Ohne Fehlerbehandlung erscheint Fehler 2007 wenn ich mich auf "Zelle" stelle im Debugger.
Mit Fehlerbehandlung so ist der Typ "Fehler", Adresse wird angezeigt (ist ca. die 2 millionste Zelle im Usedrange).
Bei Value kommt dann wie ohne Fehlerbehandlung Fehler13, Typen unverträglich in
"If Zelle.Value "" Then"
In der Tabelle ist die Zelle für mich leer, bei Länge(U10321) kommt 0 und auch bei "=U10321 * 1" kommt 0.
Wenn ich einen Bereich um diese Zelle U10321 in eine andere Datei kopiere, tritt der Fehler nicht auf, also liegt es irgendwie doch nicht am Zelleninhalt*denk*
Die Datei ist hier zu finden:
http://www.badongo.com/file/1579494
Option Explicit
Sub tt()
Dim Zelle, Blatt, b, n
Blatt = Array("Depot", "T", "C")
Workbooks.Add
On Error GoTo Fehler
Application.ScreenUpdating = False
For b = 0 To UBound(Blatt)
MsgBox ThisWorkbook.Worksheets(Blatt(b)).UsedRange.Cells.Count
n = 0
For Each Zelle In ThisWorkbook.Worksheets(Blatt(b)).UsedRange
'For Each Zelle In ThisWorkbook.Worksheets(Blatt(b)).UsedRange.Cells
n = n + 1
'If n Mod 10000 = 0 Then MsgBox n
With Zelle
If Zelle.Value <> "" Then
'MsgBox Zelle.Value
.Interior.ColorIndex = xlNone
.Font.ColorIndex = 0
.Copy Destination:=ActiveWorkbook.Worksheets(b + 1).Range(Zelle.Address)
End If
End With
Next Zelle
Next b
Application.ScreenUpdating = True
Exit Sub
Fehler:
Application.ScreenUpdating = True
MsgBox TypeName(Zelle.Value)
MsgBox Zelle.Address
MsgBox Zelle.Value
End Sub

Danke ^ Gruß
Reinhard
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leere Zelle erzeugt Fehler 2007 bzw 13
21.10.2006 20:36:16
fcs
Hallo Rheinhard,
ich konnt die Datei leider nicht öffnen, habe "nur" EXCEL 97 und das stürzt beim Öffnen ab.
Das Makro reagiert allerdings allergisch auf Zellen, die einen Fehlerwert enthalten. Dann führt der der Vergleich auf Leerstring zum Fehler und Makro-Ausstieg. Obwohl ja in der Zelle nach deiner Beschreibung garnichts drinsteht.
Problematisch sind auch verbundenen Zellen, allerdings zeigen dann die MsgBoxen immer Werte an und das Makro endet ohne weitere Fehlermeldungen.
Verwende mal folgende Prüfung, die auf leere Zellen statt auf nicht "" prüft.

With Zelle
If Not IsEmpty(Zelle) Then
'MsgBox Zelle.Value
.Interior.ColorIndex = xlNone

Mit dieser Anpassung lief das Makro weiter, Ich hab dann bei 3 Mio Schleifen abgebrochen.
Gruss
Franz
Anzeige
AW: Leere Zelle erzeugt Fehler 2007 bzw 13
21.10.2006 23:09:48
Reinhard
Hallo Franz,
danke dir, werde mal schauen ob ich damit weiterkomme. Ich bin den Umgang mit großen Dateien nicht gewöhnt.
Ist eine blöde Frage, stell sui trotzdem, wenn eine zelle mir leer erscheint und in der Eingabezeile auch der Cursor ganz links steht, also kein leerzeichen oder so, weiterhin die laänge gleich 0 ist und Inhatlt mal 1 auch 0 ergibt, ähem, kann MS es schaffen das da doch was drinsteht was einen Fehler produziert?
Das mit den verbundenen zellen prüfe ich gleich nach, falls das so sein solte poste ich das gleich. Aber bin sicher sie ist nicht verbunden. Also wenn ich mich nihct gleich melde ist sie nicht verbunden.
Und warum stürzt Xl97 ab? Datei zu groß? da sind keine Makros drin, nur Formeln.
Ps: Du musst magische Kräfte haben, du kannst Code in einer Datei starten die du nicht öffnen kannst :-)))
Wenn es nicht so ist dass du netterweise den Code in einer anderen großen Datei laufen liessest komme ich ins Grübeln...
Danke ^ Gruß
Reinhard
Anzeige
AW: Leere Zelle erzeugt Fehler 2007 bzw 13
22.10.2006 22:28:57
Gerd
Hallo Reinhard,
probier mal. Falls zuwenig Speicher vorhanden ist, müsstest Du den
Range "stückeln".

Sub Formeln_u_Formate_raus()
Dim Blatt As Variant, vnt As Variant, i As Integer
Dim dttime As Date
dttime = Now
Blatt = Array("Depot", "C", "T")
For i = 0 To 2
With ThisWorkbook.Worksheets(Blatt(i)).Cells
Set vnt = .Cells.SpecialCells(xlCellTypeFormulas)
.SpecialCells(xlCellTypeFormulas).Value = vnt.Value
.ClearFormats
End With
Next
dttime = dttime - Now
Debug.Print dttime
End Sub

Gru0
Gerd
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Leere Zelle erzeugt Fehler 2007 bzw 13 in Excel


Schritt-für-Schritt-Anleitung

Um das Problem mit leeren Zellen und den Fehlern 2007 oder 13 in Excel zu beheben, kannst du die folgenden Schritte ausführen:

  1. Öffne die betroffene Excel-Datei.

  2. Überprüfe die Zellen: Achte darauf, dass die Zellen, die leer erscheinen, tatsächlich keinen unsichtbaren Inhalt haben. Verwende die Funktion =LÄNGE(U10321) in einer anderen Zelle, um die Länge des Inhalts zu überprüfen.

  3. Makros anpassen: Verwende den folgenden angepassten VBA-Code:

    Option Explicit
    Sub tt()
       Dim Zelle, Blatt, b, n
       Blatt = Array("Depot", "T", "C")
       Workbooks.Add
       On Error GoTo Fehler
       Application.ScreenUpdating = False
       For b = 0 To UBound(Blatt)
           n = 0
           For Each Zelle In ThisWorkbook.Worksheets(Blatt(b)).UsedRange
               n = n + 1
               With Zelle
                   If Not IsEmpty(Zelle) Then
                       .Interior.ColorIndex = xlNone
                       .Font.ColorIndex = 0
                       .Copy Destination:=ActiveWorkbook.Worksheets(b + 1).Range(Zelle.Address)
                   End If
               End With
           Next Zelle
       Next b
       Application.ScreenUpdating = True
       Exit Sub
    Fehler:
       Application.ScreenUpdating = True
       MsgBox TypeName(Zelle.Value)
       MsgBox Zelle.Address
       MsgBox Zelle.Value
    End Sub
  4. Führe das Makro aus: Starte das Makro, um die Zellen zu überprüfen und gegebenenfalls zu kopieren.


Häufige Fehler und Lösungen

  • Fehler 2007: Tritt auf, wenn eine Zelle einen Fehlerwert enthält. Überprüfe, ob die Zelle tatsächlich leer ist oder einen Fehlerwert hat.
  • Fehler 13 (Typen unverträglich): Dieser Fehler kann auftreten, wenn du versuchst, einen Vergleich mit einem leeren String durchzuführen. Verwende stattdessen Not IsEmpty(Zelle).

Alternative Methoden

Wenn das oben genannte Makro nicht funktioniert, kannst du auch folgende Methoden ausprobieren:

  • Zellenbereich stückeln: Teile deinen Zellenbereich in kleinere Teile auf, um den Speicherverbrauch zu reduzieren.

    Sub Formeln_u_Formate_raus()
      Dim Blatt As Variant, vnt As Variant, i As Integer
      Blatt = Array("Depot", "C", "T")
      For i = 0 To 2
          With ThisWorkbook.Worksheets(Blatt(i)).Cells
              Set vnt = .Cells.SpecialCells(xlCellTypeFormulas)
              .SpecialCells(xlCellTypeFormulas).Value = vnt.Value
              .ClearFormats
          End With
      Next
    End Sub
  • Daten in eine neue Datei kopieren: Versuche, die Daten in eine neue Excel-Datei zu kopieren, um die Formatierungen und Fehler zu vermeiden.


Praktische Beispiele

Hier sind einige Beispiele, wie du häufige Probleme mit leeren Zellen und Fehlern in Excel lösen kannst:

  • Beispiel 1: Wenn du die Zelle U10321 überprüfst und der Fehler auftritt, kannst du den aktuellen Wert mit MsgBox anzeigen lassen, um den Inhalt zu prüfen.

  • Beispiel 2: Benutze die Funktion =WENNFEHLER(U10321*1; ""), um Fehler zu vermeiden, wenn die Zelle leer oder fehlerhaft ist.


Tipps für Profis

  • Verwende Fehlerbehandlung: Baue in dein VBA-Skript eine umfassende Fehlerbehandlung ein, um sicherzustellen, dass das Makro nicht abrupt abbricht.
  • Regelmäßige Backups: Mach regelmäßig Backups deiner Excel-Dateien, besonders wenn du mit großen Datenmengen arbeitest, um Datenverlust zu vermeiden.
  • Optimierung von Formeln: Reduziere die Anzahl komplexer Formeln und verwende stattdessen einfache Berechnungen, um die Dateigröße zu verringern.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Fehler 2007 und Fehler 13? Fehler 2007 tritt auf, wenn eine Zelle einen Fehlerwert hat, während Fehler 13 auf einen Typenkonflikt hinweist, meist durch ungültige Vergleiche.

2. Wie kann ich sicherstellen, dass eine Zelle wirklich leer ist? Verwende die Funktion =LÄNGE(Zelle), um die Länge des Inhalts zu überprüfen. Eine Länge von 0 bedeutet, dass die Zelle leer ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige