Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1460to1464
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

Fehler: Typen unverträglich

Fehler: Typen unverträglich
04.12.2015 15:31:20
Sascha
Hallo zusammen,
woran liegt dieser o.g. Fehler? Kann mir jemand weiterhelfen? (Ganz unten fett markiert)

Sub Datentransport()
'Globale Variablen
Dim strDeckblatt As String: strDeckblatt = "Deckblatt"
Dim strMetalle As String: strMetalle = "Metalle"
Dim strMethoden As String: strMethoden = "Methodenzuordnung"
Dim wbQuellmappe As Workbook: Set wbQuellmappe = ActiveWorkbook
Dim strZielpfad As String: strZielpfad = "C:\Users\oxshein\Desktop"
Dim strZieldatei As String: strZieldatei = "Ziel.xlsm"
Dim wbZielmappe As Workbook
Dim strZieltabelle As String: strZieltabelle = "Gesamt"
Dim wksZieltabelle As Worksheet
Dim rngLetzteZelle As Range
Dim lngLetzteZeile As Long
'Methoden werden eingelesen zum späteren Vergleich und der Zuordnung zur richtigen Spalte
Dim arrMethodenGesamt(92, 1) As String
For i = 0 To UBound(arrMethodenGesamt) - LBound(arrMethodenGesamt)
arrMethodenGesamt(i, 0) = Sheets(strMethoden).Range("A" & i + 1)
arrMethodenGesamt(i, 1) = Sheets(strMethoden).Range("B" & i + 1)
Next i
'Zielmappe wird gegebenenfalls geöffnet
If istArbeitsmappeOffen(strZieldatei) Then
Set wbZielmappe = Application.Workbooks(strZieldatei)
bolOpen = True
Else
Set wbZielmappe = Application.Workbooks.Open(strZielpfad & Application.PathSeparator &   _
_
_
_
strZieldatei)
bolOpen = False
End If
'Zieltabelle wird gesetzt
Set wksZieltabelle = wbZielmappe.Worksheets(strZieltabelle)
With wksZieltabelle
'                                   METALLE                                      |
If wbQuellmappe.Worksheets(strDeckblatt).Range("I20") > 0 Then
'Erzeuge Array mit Proben und Methoden
Dim arrProbenMetalle(7, 8) As String
Dim intProbeMetalleEntahlten As Integer: intProbeMetalleEntahlten = -1
Dim x As Integer: x = 0 'Zählvariable für die Proben(-anzahl)
For Each probe In wbQuellmappe.Worksheets(strMetalle).Range("D19:D26")
'Wenn eine Probe eingetragen ist
If (probe = "") = False Then
'Überprüfe ob die Probe sich bereits im Array befindet
For i = 0 To UBound(arrProbenMetalle, 1) - LBound(arrProbenMetalle, 1)
If arrProbenMetalle(i, 0) = probe Then
'Wenn ja, dann speichere die Position
intProbeMetalleEntahlten = i
Exit For
End If
Next i
'Wenn die Probe bereits bekannt ist, dann speichere die Methode in der   _
_
_
_
2ten Dimension
If intProbeMetalleEntahlten > -1 Then
'MsgBox ("Probe ist enthalten: " & probe)
For i = 1 To UBound(arrProbenMetalle, 2) - LBound(arrProbenMetalle,  _
_
_
_
2)
If arrProbenMetalle(intProbeMetalleEntahlten, i) = "" Then
arrProbenMetalle(intProbeMetalleEntahlten, i) = Sheets( _
strMetalle).Range("S" & probe.Row).Value
Exit For
End If
Next i
Else
'MsgBox ("Neue Probe hinzugefügt: " & probe)
arrProbenMetalle(x, 0) = probe
For i = 1 To UBound(arrProbenMetalle, 2) - LBound(arrProbenMetalle,  _
_
_
_
2)
If arrProbenMetalle(x, i) = "" Then
arrProbenMetalle(x, i) = wbQuellmappe.Worksheets(strMetalle) _
_
_
_
.Range("S" & probe.Row)
Exit For
End If
Next i
x = x + 1
End If
End If
intProbeMetalleEntahlten = -1
Next probe
'Übertragung der Daten in die Zieltabelle
For i = 0 To UBound(arrProbenMetalle, 1) - LBound(arrProbenMetalle, 1)
If (arrProbenMetalle(i, 0) = "") = False Then
'Nächste Einfüge-Zeile ermitteln
Set rngLetzteZelle = .Cells.Find(What:="*", After:=Range("A1"), _
LookIn:=xlFormulas, lookat:=xlWhole, searchorder:=xlByRows, _
searchdirection:=xlPrevious)
If rngLetzteZelle Is Nothing Then
lngLetzteZeile = 1
Else
lngLetzteZeile = rngLetzteZelle.Row + 1
End If
'Laufende Nummer einfügen
If IsNumeric(.Cells(rngLetzteZelle.Row, "A")) = True Then
.Cells(lngLetzteZeile, "A") = .Cells(rngLetzteZelle.Row, "A") + 1
Else
.Cells(lngLetzteZeile, "A") = 1
End If
'Übertrage Daten vom Deckblatt
'Auftraggeber: A3
.Cells(lngLetzteZeile, "I") = wbQuellmappe.Worksheets(strDeckblatt). _
Range("A3")
'Auftragsdatum: P3
.Cells(lngLetzteZeile, "J") = wbQuellmappe.Worksheets(strDeckblatt). _
Range("P3")
'Kostenstelle: P6
.Cells(lngLetzteZeile, "N") = wbQuellmappe.Worksheets(strDeckblatt). _
Range("P6")
'Projektname: A10
.Cells(lngLetzteZeile, "E") = wbQuellmappe.Worksheets(strDeckblatt). _
Range("A10")
'Unterprojektname: K10
.Cells(lngLetzteZeile, "F") = wbQuellmappe.Worksheets(strDeckblatt). _
Range("K10")
'Übertrage Daten von Metalle
'Probename
.Cells(lngLetzteZeile, "D") = arrProbenMetalle(i, 0)
'Methoden
For k = 0 To UBound(arrProbenMetalle, 2) - LBound(arrProbenMetalle, 2)
'TODO: Array durchlaufen und zuordnen
For j = 0 To UBound(arrMethodenGesamt) - LBound(arrMethodenGesamt)
If arrProbenMetalle(i, k) = arrMethodenGesamt(j, 0) Then
Dim s As String: s = arrMethodenGesamt(j, 1)
.Cells(lngLetzteZeile, s) = 1
Exit For
End If
Next j
Next k
End If
Next i
End If
End With
End Sub
'Prüft ob Zielarbeitsmappe geöffnet ist
Public Function istArbeitsmappeOffen(ByVal strName As String) As Boolean
Dim wb As Workbook
On Error GoTo Fehler
istArbeitsmappeOffen = True
Set wb = Application.Workbooks(strName)
Fehler:
With Err
Select Case .Number
Case 0 'Alles ok
Case Else
istArbeitsmappeOffen = False
End Select
End With
End Function

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler: Typen unverträglich
04.12.2015 15:56:43
Matthias
Hallo Sascha,
im Cells-Befehl dürfen nur Zahlen benutzt werden, 's' wird jedoch in der Zeile darüber als Text (String) definiert, daher kommt es zu einem Problem. Es müsste daher lauten:
Dim s As Long: s = arrMethodenGesamt(j, 1))

Jedoch habe ich keine Ahnung was genau dort im Text-Array 'arrMethodenGesamt' gespeichert ist, sollte der Wert von Excel nicht als Zahl interpretiert werden können, so fliegt dir der nächste Fehler um die Ohren.
lg Matthias

AW: Fehler: Typen unverträglich
04.12.2015 19:22:36
Daniel
Hi
bei Cells(x, y) kann man beim zweiten Paramter, welcher die Spalte beschreibt sowohl die Spaltennummer (1-16384) als auch den Spaltenbuchstaben einsetzen ("A"-"XFD")
wenn du den Spaltenbuchstaben verwendest, ist STRING der richtige Datentyp für Variabeln, die an dieser Stelle eingesetzt werden.
arbeitest du mit der Spaltennummer, wäre LONG oder INTEGER der richtige Datentyp.
letztentlich hängt es also davon ab, was in diesen Zellen drin steht:
Sheets(strMethoden).Range("B" & i + 1)
wenn hier Spaltennummern stehen, solltest du arrMethodenGesamt als Variant deklarieren und s als long.
Gruss Daniel

Anzeige
AW: Fehler: Typen unverträglich
07.12.2015 08:12:02
Sascha
Hallo Daniel,
in den Zellen stehen die Buchstaben, exakt so: "A", "B", "C" etc..
Daher String, trotzdem spuckt er ja den Fehler aus :-/

AW: Fehler: Typen unverträglich
07.12.2015 08:12:12
Sascha
Hallo Daniel,
in den Zellen stehen die Buchstaben, exakt so: "A", "B", "C" etc..
Daher String, trotzdem spuckt er ja den Fehler aus :-/

AW: Fehler: Typen unverträglich
07.12.2015 11:50:18
Rudi
Hallo,
welchen Wert hat denn s?
Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige