Microsoft Excel

Herbers Excel/VBA-Archiv

Laufzeitfehler "13": Typen unverträglich | Herbers Excel-Forum


Betrifft: Laufzeitfehler "13": Typen unverträglich von: Jochen Bode
Geschrieben am: 01.12.2009 08:42:41

Hallo Freunde,
habe folgendes Makro aufgezeichnet:

Sheets("Auftrag 1").Select
Range("O1").Select
Selection.EntireColumn.Hidden = False
Range("O11:O310").Select
Selection.Copy
Range("P11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("O13").Select
Selection.EntireColumn.Hidden = True
Sheets("Gesamt A1").Select
Columns("A:A").Select
Selection.ClearContents
Sheets("Auswertung A1").Select
Range("D1:D310").Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
Sheets("Auswertung A1").Select
Range("A2").Select
Dim quelle As Worksheet, ziel As Worksheet
Dim i As Integer, j As Integer
Dim vorhanden As Boolean

Set quelle = Application.Worksheets("Auswertung A1")
Set ziel = Application.Worksheets("Gesamt A1")
ReDim artnr(quelle.Cells(Rows.Count, 1).End(xlUp).Row) As String
j = -1
For i = 1 To Sheets("Auswertung A1").Cells(Rows.Count, 1).End(xlUp).Row
vorhanden = False
For k = 0 To j
*** If quelle.Cells(i, 1) = "" Or quelle.Cells(i, 1) = artnr(k) Then vorhanden = True ***
End If
Next k
If vorhanden = False Then
j = j + 1
artnr(j) = quelle.Cells(i, 1)
End If
Next i

For i = 0 To j
ziel.Cells(i + 1, 1) = artnr(i)
Next i

Sheets("Gesamt A1").Select
Range("A1").Select
End Sub

Mein Problem:
In der Ursprungsdatei hatte ich 200 Zeilen die mir dieses MAKRO ausgewertet hat und es war alles in Ordnung.
Dann habe ich noch 100 Zeilen hinzu gefügt und auch geklappt.

Jetzt versuche ich wieder Zeilen zu löschen und das MAKRO hängt sich an dieser Zeile auf:

*** If quelle.Cells(i, 1) = "" Or quelle.Cells(i, 1) = artnr(k) Then vorhanden = True ***

Sternchen nur die Kennzeichnung, an welcher Stelle das MAKRO stehen bleibt.

Hat einer in der großen EXCEL - Weld eine Lösung für mich parat???

Danke im voraus,

Jochen

  

Betrifft: AW: Laufzeitfehler "13": Typen unverträglich von: Peter Rücker
Geschrieben am: 01.12.2009 09:55:30

Hallöchen Jochen,

lasse die Frage zwar mal offen, aber:

Hast Du die Datei nach dem Löschen der Zeilen gespeichert?
Lässt Du das Makro mehrmals hintereinander durchlaufen? (Wenn ja, solltest Du rein vorsichtshalber die Variable i auf 0 zurücksetzen.

Gruß

Peter


  

Betrifft: AW: Laufzeitfehler "13": Typen unverträglich von: Jochen Bode
Geschrieben am: 01.12.2009 10:29:13

Hallo Peter,
habe die Änderung vorgenommen:

If quelle.Cells(o, 1) = "" Or quelle.Cells(o, 1) = artnr(k) Then vorhanden = True

Erst nach dem ich in dieser Zeile "artnr(j) = quelle.Cells(i, 1)" auch die Änderung vorgenommen habe läuft das MAKRO etwas weiter.

Nun bleibt es an diese Stelle stehen:

artnr(j) = quelle.Cells(o, 1)

Gruß
Jochen


  

Betrifft: AW: Laufzeitfehler "13": Typen unverträglich von: Peter Rücker
Geschrieben am: 02.12.2009 08:40:35

Hallo Jochen,

hab mir gerade nochmal Dein Progrämmchen vorgenommen.
Wenn Du es folgendermaßen veränderst, funktioniert es bei mir ohne Probleme auch ohne zwischenspeichern.

Set quelle = Application.Worksheets("Auswertung A1")
Set ziel = Application.Worksheets("Gesamt A1")
ReDim artnr(quelle.Cells(Rows.Count, 1).End(xlUp).Row) As String
j = 1
For i = 1 To Sheets("Auswertung A1").Cells(Rows.Count, 1).End(xlUp).Row
vorhanden = False
If quelle.Cells(i, 1) = "" Or quelle.Cells(i, 1) = artnr(i) Then vorhanden = True

If vorhanden = False Then
artnr(i) = quelle.Cells(i, 1)
End If
Next i
i = i - 1
For j = 1 To i
ziel.Cells(j, 1) = artnr(j)
Next j

Gruß Peter


  

Betrifft: AW: Laufzeitfehler "13": Typen unverträglich von: Jochen Bode
Geschrieben am: 02.12.2009 09:50:37

Hallo Peter,
habe Deine Änderung in mein MAKRO 1 : 1 kopiert und es bleibt an der Gleichen Stelle:
[ If quelle.Cells(i, 1) = "" Or quelle.Cells(i, 1) = artnr(i) Then vorhanden = True ] stehen.

Kann die Datei leider nicht hochladen, da sie zu groß ist ( 3 MB ).

Gruß
Jochen


  

Betrifft: AW: Laufzeitfehler "13": Typen unverträglich von: Peter Rücker
Geschrieben am: 02.12.2009 10:27:17

Hallo Jochen,

hab gerade eben nochmal das komplette Makro ausprobiert und es läuft bei mir einwandfrei.
Mit welcher Fehlermeldung bleibt er denn stehen. Wäre vielleicht noch ein Hinweis, auf dem man aufbauen kann.

Gruß

Peter


  

Betrifft: AW: Laufzeitfehler "13": Typen unverträglich von: Jochen Bode
Geschrieben am: 02.12.2009 10:38:50

Hallo Peter,
Habe jetzt die Zeile 296 bis zur letzen Zeile ( 311 ) aus meiner Datei gelöscht.

Die Fehlermeldung lautet:

Laufzeitfehler '13':
Typen unverträglich

diese Zeile wird Gelb hinterlegt:

If quelle.Cells(i, 1) = "" Or quelle.Cells(i, 1) = artnr(k) Then

Gruß
Jochen


  

Betrifft: AW: Laufzeitfehler "13": Typen unverträglich von: Peter Rücker
Geschrieben am: 02.12.2009 11:03:00

Hallo Jochen,

nochmal ne Frage:
Aus welchem Blatt löscht Du die Zeilen?
Hast Du auf einem der ersten Blätter evtl. in den entsprechenden Zeilen Zellbezüge auf die fehlenden Zeilen? Dann kommt nämlich ne Fehlermeldung beim löschen raus.

Gruß
Peter


  

Betrifft: AW: Laufzeitfehler "13": Typen unverträglich von: David
Geschrieben am: 02.12.2009 11:18:09

Hallo Jochen,

da ich wohl in dem Thread ignoriert werde - zumindest habe ich kein Feedback auf meinen Beitrag bekommen - wollte ich mich eigentlich raushalten.

Aber noch als kleiner Tip:
Wenn man für die Variablen eine Überwachung einfügt, kann man kontrollieren, bei welchem Wert der Fehler auftriff. Somit lässt er sich auch besser eingrenzen.
Ich vermute, entweder ist i oder k negativ, oder das ="" verursacht den Fehler, denn wenn ein numerischer Wert leer ist, ergibt das nicht "" sondern 0.

Gruß
David


  

Betrifft: AW: Laufzeitfehler "13": Typen unverträglich von: Jochen Bode
Geschrieben am: 02.12.2009 12:33:29

Hallo David,
das sollte kein Ignorieren sein, bloß mit Deinem Tipp konnte ich nicht sorecht etwas anfangen. Im VBA bin ich nicht sogut das ich solche Tipps umsetzen kann.

Deinen Tipp mit dem Kürzen der Formeln werde ich einbauen.

Danke für Deine Bemühungen;-)

Gruß
Jochen


  

Betrifft: AW: Laufzeitfehler "13": Typen unverträglich von: Jochen Bode
Geschrieben am: 02.12.2009 12:28:51

Hallo Peter,
Deine Frage nach dem Tabellenblatt hat geholfen.

Habe die Zeilen nur in dem Tabellenblatt "Auftrag 1" gelöscht aber nicht im Tabellenbaltt "Auswertung A1", so mit blieb das MAKRO stehen.

Danke für Deine bemühungen;-)

Gruß
Jochen


  

Betrifft: AW: Laufzeitfehler "13": Typen unverträglich von: David
Geschrieben am: 01.12.2009 10:25:08

Hallo Jochen,

bei Code, der ganze Zeilen und/oder Spalten löscht, sollte man immer von hinten/unten nach vorn/oben abarbeiten, also nach dem Muster

For i=100 to 1 step -1

Ansonsten werden nach jedem Löschvorgang eine oder mehrere Zeilen übersprungen, da der Zähler ja schon eine Nummer weiter ist, die nachfolgenden aber hochrutschen.

Ich habe aber nicht getestet, ob das deinen Fehler löst.

Außerdem solltest du dich dringen mit dem Nicht-Notwendigsein von Select auseinandersetzen. Die Aufzeichnungen des Recorders sind in der Hinsicht seeeehr unübersichtlich.

Nur ein Beispiel:

statt

Range("O11:O310").Select
Selection.Copy

kann man schreiben:

Range("O11:O310").Copy

Leider findet man das in der Hilfe so nicht, so dass man dies nur per Learning-by-doing rausbekommt. Wenn du öfters im Forum unterwegs bist, wird dir dies immer wieder über die Füße laufen.

Gruß
David


  

Betrifft: AW: Laufzeitfehler "13": Typen unverträglich von: Yusuf
Geschrieben am: 01.12.2009 10:27:33

Moin,

versuche mal bitte bei
For k = 0 to j Step - 1
da j = -1 ist. Ich weiß nicht ob die Schleife sonst ins negative laufen kann.

Gruß
Yusuf


Beiträge aus den Excel-Beispielen zum Thema "Laufzeitfehler "13": Typen unverträglich"