Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1352to1356
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
Fehler Nr. 13 - Typen unverträglich
23.03.2014 18:32:24
Tobias
Hallo, ich habe folgendes Problem ..
ich habe eine Datei bei der die Bestellungen für einen Tag zusammengezählt werden
Bislang funkioniert alles wunderbar.
Nur wenn die Bestellnummern nicht nur aus Zahlen sondern aus einer Kombination von Buchstaben und Zahlen sind kommt der Fehler 13.
Leider finde ich den Fehler nicht.
Auf "Tagesbestellung zusammenfassen klicken"
Gruß Tobi
Abei die Datei und das Makro
https://www.herber.de/bbs/user/89811.zip
Sub Bestellung()
Dim oWorkbook As Workbook
Dim wksDaten As Worksheet
Dim wksBestell As Worksheet
Dim wksEingabe As Worksheet
Dim ZeileZ As Long, Zelle As Range
Dim lngZeileD As Long, lngSpalteD As Long
Dim Zeile_D As Long, Spalte_D As Long
Dim objCol As New Collection
Dim datDatum As Date
Dim arrBestell() As Variant, intJ As Integer, intK As Integer
Dim varArtNr, varMenge
Const cZeileTitel As Long = 4 'Zeile mit Spaltentiteln in Bestellliste
UserForm1.Show vbModeless
Application.Wait Now + TimeValue("00:00:01")
On Error GoTo Fehler
Set wksBestell = ThisWorkbook.Worksheets("Tages Verkauf")
Set wksEingabe = ThisWorkbook.Worksheets("Eingabe")
datDatum = wksEingabe.Range("B4")
wksBestell.Range("D2") = datDatum
' Prüfen ob Datei "Daten.xls" geöffnet ist
With Application
For Each oWorkbook In .Workbooks
If UCase$(oWorkbook.Name) = UCase(pcDateiDaten) Then
Exit For
End If
Next
End With
If oWorkbook Is Nothing Then
MsgBox "Die Datei """ & pcDateiDaten & """ ist nicht geöffnet!"
Exit Sub
End If
Set wksDaten = oWorkbook.Worksheets("Daten")
'Alt-Daten in Bestellungen löschen
With wksBestell
Set Zelle = .Range("B:D").Find(what:="*", after:=.Cells(1, 2), LookIn:=xlFormulas, _
lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious)
ZeileZ = cZeileTitel 'Zeile mit Spaltentiteln
If Zelle Is Nothing Then
Else
If Zelle.Row > ZeileZ Then
.Range(.Rows(ZeileZ + 1), .Rows(Zelle.Row)).ClearContents
End If
End If
End With
'suchen nach den Zeilen mit dem Datum für die Bestellungen
With wksDaten
For Zeile_D = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Zeile_D, 3).Value = datDatum Then
' Daten in der Zeile ab Spalte 4  in Blatt "Eingang" ab Zeile 14 eintragen
For lngSpalteD = 4 To .Cells(Zeile_D, .Columns.Count).End(xlToLeft).Column Step 4
With .Cells(Zeile_D, lngSpalteD)
varArtNr = .Offset(0, 1)   'Artikelnr
If varArtNr  "" Then
varMenge = .Value          'Menge
objCol.Add Item:=varArtNr, Key:=Str(varArtNr)
' Zeilenzähler im Artikel erhöhen
intJ = intJ + 1
ReDim Preserve arrBestell(1 To 2, 1 To intJ)
arrBestell(1, intJ) = varArtNr
arrBestell(2, intJ) = varMenge
End If
End With
NextArtikel:
Next lngSpalteD
End If
Next Zeile_D
End With 'wksDaten
If intJ > 0 Then
With wksBestell
For intK = 1 To intJ
ZeileZ = ZeileZ + 1
.Cells(ZeileZ, 2) = intK
.Cells(ZeileZ, 3) = arrBestell(1, intK)
.Cells(ZeileZ, 4) = arrBestell(2, intK)
Next intK
If ZeileZ > cZeileTitel + 1 Then
'Daten nach Artikel-Nr. sortieren
With .Range(.Cells(cZeileTitel, 3), .Cells(ZeileZ, 4))
.Sort Key1:=.Cells(1, 1), Order1:=xlAscending, Header:=True
End With
End If
'Formel für Bezeichnung und Gewicht einfügen und Ergebnisse durch Werte ersetzen
With .Range(.Cells(cZeileTitel + 1, 6), .Cells(ZeileZ, 6))
'Bezeichnung einfügen und Ergebnisse durch Werte ersetzen
.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-3],Artikel!C2:C9,2,0)),""nicht vorhanden"","  _
_
_
& "VLOOKUP(RC[-3],Artikel!C2:C9,2,0))"
.Calculate
.Value = .Value
'Gewicht einfügen und Ergebnisse durch Werte ersetzen
.Offset(0, 1).FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-4],Artikel!C2:C9,3,0))," _
& """nicht vorhanden"",IF(VLOOKUP(RC[-4],Artikel!C2:C9,3,0)="""",""""," _
& "VLOOKUP(RC[-4],Artikel!C2:C9,3,0)))"
.Offset(0, 1).Calculate
.Offset(0, 1).Value = .Offset(0, 1).Value
'Lieferant einfügen und Ergebnisse durch Werte ersetzen
.Offset(0, 2).FormulaR1C1 = "=VLOOKUP(RC[-5],Artikel!R2C2:R2000C5,4,1)"
.Offset(0, 2).Calculate
.Offset(0, 2).Value = .Offset(0, 2).Value
End With
End With
Else
MsgBox "keine Bestellungen zum Datum " & Format(datDatum, "DD.MM.YYYY") & " gefunden!"
End If
Fehler:
With Err
Select Case .Number
Case 0
Case 457 'Fehler - Artikelnummer kommt mehrfach vor
'Artikel-Nr. in Liste suchen und Menge addieren
For intK = 1 To UBound(arrBestell, 2)
If arrBestell(1, intK) = varArtNr Then
arrBestell(2, intK) = arrBestell(2, intK) + varMenge
Exit For
End If
Next
Resume NextArtikel
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
UserForm1.Hide
End Sub

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Typen unverträglich - was heißt das?
23.03.2014 20:02:20
Matthias
Hallo
Typen unverträglich.
Nur wenn die Bestellnummern nicht nur aus Zahlen sondern aus einer Kombination von Buchstaben und Zahlen sind kommt der Fehler 13.
Sollte doch ne falsche Dim-Anweisung sein, oder
Kombination von Buchstaben und Zahlen = String
Bei Dir ist aber alles Long
Ungetestet
Gruß Matthias

AW: Typen unverträglich - was heißt das?
23.03.2014 23:13:43
Tobias
Hallo Matthias,
ich habe die Dim Anweisung auf String geändert aber es funktioniert leider nicht.
Was muss ich noch ändern?
LG
Tobias

AW: Typen unverträglich - was heißt das?
24.03.2014 07:20:52
Firmus
Hallo Tobias,
bei mir läuft Dein code fehlerfrei durch - warum?
Mir ist allerdings aufgefallen, dass Du bei den "DATEN" in den Zellen E8 únd E9 jeweils die Artikelnr. 172,2 stehen hast. Ist eine Artikelnr. mit Kommastellen beabsichtigt?
Alle anderen Artikelnrn. sind Ganzzahlen.
Gruß
Firmus

Anzeige
Kein Fehler13 nach deiner Anweisung! Evtl ...
24.03.2014 03:41:40
Luc:-?
…hast du vergessen, einen entsprd Fehler einzubauen, Tobi;
das wird wohl keiner für dich tun, dazu ist das Ganze zu umfangreich!
Morrn, Luc :-?

AW: Kein Fehler13 nach deiner Anweisung! Evtl ...
24.03.2014 15:05:04
Tobias
Ich habe die Datei nochmal hochgeladen.
Der Odner MBB muss im direkt auf C: liegen !
Jetzt tritt der Fehler sofort auf sobald man den Bottom "Tages Bestellung zusammenfassen"
Hat jemand eine Idee wieso der Fehler aftritt sobald ein Buchstabe in der Bestellnummer vorkommt.
https://www.herber.de/bbs/user/89820.zip
Cu Tobi

Datei abspecken ... !
24.03.2014 17:37:17
Matthias
Hallo Tobias
Sorry aber das ist zu viel ProgrammCode.
Bevor ich in fremden Dateien Makros aktiviere schau ich mir immer den kompletten Code an.
Das ist einfach zu viel, alles zu analysieren. Also werde ich den Code nicht starten.
Das geht mit solchen banalen Dingen los:
ThisWorkbook.SaveCopyAs "H:\Sicherung\Daten\" & Format(Date, "yy_mm_dd") & ".xlsm"
Bei mir gibts z.B. kein LW "H"
Und nun stelle man sich aber mal vor ich hätte ein solches Laufwerk H:\Sicherung\Daten\
und das wäre ein vertrauenswürdiger Speicherort für Dateien mit Makros.
Wenn jetzt in Deinen Dateien (auch unbewußt!) bösartiger Code vorhanden wäre, könnte es sein das
beim ersten Öffnen dieser SicherungsDatei meine Festplatte plötzlich leer ist.
Auch wenn Du jetzt evtl. nicht das Geringste verstehst, was ich Dir sagen will:
Du solltest Deine Bsp.Datei aufs Wesentlichste reduzieren.
Alles was mit Deinem Problem nichts zu tun hat löschen.
Gruß Matthias

Anzeige
Datei ist abgespeckt und der Fehler tritt auf.
24.03.2014 19:30:00
Tobias
Hallo Matthias,
schon klar und verständlich.
Ich habe die Dateien auf das Wesentlich gekürzt.
Man muss beide Dateien öffnen und dann auf den Bottom "Tages Bestellung zusammenfassen" drücken dann erscheint der Fehler.
https://www.herber.de/bbs/user/89823.zip
Gruß Tobi

AW: Datei ist abgespeckt und der Fehler tritt auf.
24.03.2014 20:37:25
Crazy
Hi Tobi
ich hab mal dein
On Error GoTo Fehler 

auskommentiert
dann bleibt der Code an dieser Stelle stehen:
objCol.Add Item:=varArtNr, Key:=Str(varArtNr)
das hab ich dann aus und den Errorhandler wieder einkommentiert
dann schreibts zumindest schon mal was ins Blatt Tages Verkauf
Vielleicht bringt dich das deinem Fehler näher
MfG Tom

Anzeige
AW: Datei ist abgespeckt und der Fehler tritt auf.
25.03.2014 10:49:03
Tobias
Leider komme ich dennoch nicht weiter.
Ich bin am verzweifeln .. hat sonst keiner eine Idee?
LG
Tobias

AW: Datei ist abgespeckt und der Fehler tritt auf.
25.03.2014 12:39:29
firmus
Tom,
ich konnte Deinen Fehler mit einem kleinen VBA reproduzieren.
Immer wenn ich mixed datatypes hatte (key=numerisch, item=string) oder entsprechend ähnlich
trat der Fehler auf. Sollte aber laut MS-Hilfe funktionieren.
Kannst Du die Collection durch ein Array ersetzen, das ist m.E. robuster.
Gruß
Firmus

AW: Datei ist abgespeckt und der Fehler tritt auf.
25.03.2014 20:42:52
Tobias
Hallo Firmus
Was meinst du mit
"Kannst Du die Collection durch ein Array ersetzen, das ist m.E. robuster."
Ich weiß leider nicht was du meinst und wie ich das Makro zum Laufen bekommen.
Um eine weitere / genauere Hilfe wäre ich dir / euch dankbar
Gruß
Tobi

Anzeige
AW: Datei ist abgespeckt und der Fehler tritt auf.
26.03.2014 07:35:18
Tino
Hallo,
ich vermute es liegt an der umwandlungsfunktion Str() die eine Zahl erwartet.
Gibt einen Wert vom Typ Variant (String) zurück, der eine Zahl darstellt.
Bei dir kommt aber auch Text vor, versuche es mal cStr()
Gruß Tino

146 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige