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

FehlerNr:: 13 Typen unverträglich - Warum?

FehlerNr:: 13 Typen unverträglich - Warum?
10.11.2015 10:51:25
B.
Hallo zusammen!
Ich habe ein Problem mit einem Makro und hoffe auf die Hilfe des Forums!
Ich nutze Excel um einen Schicht- bzw. Dienstplan zu erstellen und verwalten. In meiner Datei sind 5 Blätter, auf denen je eine Woche abgebildet ist. Für jeden Monat gibt es eine eigene Datei.
Der eigentliche Plan jedes Tages wird auf einer Fläche von 6 Spalten mal 20 Zeilen dargestellt. Die Zeilen sind für die forschreitenden Uhrzeiten (ab 8... bis 18 Uhr) und in die 6 Spalten können die Namen der verschiedenen Personen eingetragen werden, die Dienst tun. Für jeden der 5 Wochentage gibt es so ein Feld von 20 Zeilen mal 6 Spalten.
Also z.B. MONTAG
x | Dienstort 1 | Dienstort 2 | Home Office | ...
ab 8 | Hans | Claudia |
ab 8.30 | Hans | Claudia |
ab 9 | Hans | Claudia | Hakan
Das Makro soll diese Felder nun auslesen und eine Textdatei erzeugen, in der nach Mitarbeitern sortiert wird, wann und wo diese Dienst tun. Die Ausgabe soll z.B. so aussehen:
****Hans****
Mo 6.7. Dienstort 2
von 09.30 bis 14.30
Die 7.7. Dienstort 1
von 08.30 bis 15.30
****Claudia****
Die 7.7. Homeoffice
von 11.30 bis 17.30
Mi 8.7. Dienstort 1
von 13.30 bis 17.30
Das Makro geht dazu eine Liste der Mitarbeiter durch und prüft für jeden Mitarbeiter jedes Tabellenblatt, und hier dann Zeile für Zeile jede Spalte jedes Tages. Das habe ich mit 5 For-Schleifen ineinander realisiert.
Nun der Fehler:
Das funktioniert soweit auch - aber nur, wenn ich das Makro nur über ein Arbeitsblatt laufen lasse. Wenn ich die Schleife zur Wochen-Prüfung über 2 Blätter / Wochen laufen lasse, funktioniert es nicht, stattdessen wird eben der "FehlerNr. 13 Typen unverträglich" produziert.
Es scheint aber nicht am zweiten Schleifendurchlauf der Wochen-Schleife zu liegen. Wenn ich die Wochen-Schleife 2 mal laufen lasse aber die Anzahl der Durchläufe der Tages-Schleife auf 3 statt 5 setze, läuft das Makro fehlerfrei durch. Es scheint also mit der Anzahl der geprüften Zellen insgesamt zu tun zu haben...
Die Ausgabe in die Datei scheint ebenfalls nicht die Fehlerquelle zu sein, ich habe eine Variante "gebaut", in der die Daten in ein Arbeitsblatt in der gleichen Excel-Datei geschrieben werden, auch hier tritt der Fehler auf.
Ich habe es in Excel 2007 und 2013 getestet und bin nun etwas ratlos. Hat jemand Ideen woran es liegt und wie ich den Fehler umgehe?

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: FehlerNr:: 13 Typen unverträglich - Warum?
10.11.2015 10:54:39
Daniel
Hi
um dir sagen zu können was du tun musst, sollten wir deinen Code und die Datei dazu kennen.
das ist wie beim Arzt. Nur mit der Beschreibung "Herr Doktor mir tut was weh", lässt sich schwer eine Diagnose erstellen.
Gruß Daniel

woran es liegt: am Code, woran sonst? owT
10.11.2015 10:57:53
Rudi

AW: woran es liegt: am Code, woran sonst? owT
10.11.2015 12:21:40
B.
Hallo,
hier der Code:
Sub prüfestudi()
'-----Variablendeklarationen-----'
'--Variablen für die do-while-schleife:--'
'gibt an in welcher Zeile im Arbeitsblatt "wer kann wann" der Name des ersten Studenten steht
studispalte = 3
'gibt an in welcher Spalte im Arbeitsblatt "wer kann wann" der Name des ersten Studenten steht
studiname = 1
'studiname muss gefüllt sein damit die do-schleife beim ersten durchlauf losläuft
'--Variablen für die For-Schleifen:--'
Dim tagzähler As Integer
tagzähler = 1
Dim wochenzähler As Integer
wochenzähler = 1
Dim aspt As Integer
Dim azpt As Integer
Dim zabstand As Integer
Dim anzahltage As Integer
Dim spaltenzähler As Integer
Dim sabstand As Integer
Dim tssv As Integer
Dim zeilenzähler As Integer
'-- Sonstige Variablen--'
aspt = 6
' Anzahl Spalten pro Tag
azpt = 20
' Anzahl Zeilen pro Tag
zabstand = 5
' Abstand des ersten Feldes des eigentlichen Schichtplans vom oberen Rand in der Wochenblatt- _
Datei (Der eingetragene Wert ist die erste Zeile)
sabstand = 3
' Abstand des ersten Feldes des eigentlichen Schichtplans vom linken Rand in der Wochenblatt- _
Datei (Der eingetragene Wert ist die erste Spalte)
tagzeile = 2
' Die Zeile in der die Wochentage genannt werden
datumzeile = 1
' Die Zeile in der die Kalender-Daten genannt werden
schichtartzeile = 3
' Die Zeile  in der die Art der Schicht genant wird
schichtkommentarzeile = 4
' Die Zeile für evtl. Kommentare zu der Schicht
uhrzeitspalte = 2
' Die Spalte in der die Uhrzeiten stehen
anzahltage = 5
' Die Anzahl der Tage pro Tabellenblatt, die geplant werden. 5 = Z.B: Mo-Fr. Wenn man auf den  _
Blättern ein Feld für Samstag zurechtmacht und hier 6 eingträgt müsste es funktionieren
Dim anzahlstudis As Integer
anzahlstudis = 11
'Die Anzahl der Studis in der Liste
Dim studizähler As Integer
' Für For-Schleife
'--Variablen für die Textausgabe--
Dim Datei As String, Text As String
Dim Zeile As Long
Dim zeigen
'-----Ende Variablendeklaration-----'
'----- Beginn 1. Block Textausgabe-----'
On Error GoTo Fehler
'Zieldatei festlegen
Datei = ThisWorkbook.Path & "\" & ThisWorkbook.Name & ".txt"
Open Datei For Output As #1            'Zieldatei öffnen
'----- Ende 1. Block Textausgabe-----'
For studizähler = 1 To anzahlstudis
studiname = Workbooks("makrotest1.xls").Worksheets("Wer kann wann").Cells(studizähler,  _
studispalte).Value
If studiname  "" Then
Print #1, br
Print #1, "****" + studiname + "****", br
For wochenzähler = 1 To 2
For tagzähler = 1 To anzahltage
For spaltenzähler = 1 To aspt
zellvergleicher = ""
For zeilenzähler = 1 To azpt
tssv = (tagzähler - 1) * aspt 'tagesstartspaltenverschieber verrückt das  _
erste Feld das geprüft wird auf das erste Feld des jeweiligen tages
zellvergleicher = Worksheets(wochenzähler).Cells(zeilenzähler + zabstand -  _
1, spaltenzähler + sabstand + tssv - 1).Value
zellvergleichereinenweiter = Worksheets(wochenzähler).Cells(zeilenzähler +  _
zabstand, spaltenzähler + sabstand + tssv - 1).Value
zellvergleichereinenzurück = Worksheets(wochenzähler).Cells(zeilenzähler +  _
zabstand - 2, spaltenzähler + sabstand + tssv - 1).Value
If zellvergleicher = studiname Then
If zellvergleichereinenzurück  studiname Then
schichtart = Worksheets(wochenzähler).Cells(schichtartzeile,  _
spaltenzähler + sabstand + tssv - 1).Value
schichtkommentar = Worksheets(wochenzähler).Cells( _
schichtkommentarzeile, spaltenzähler + sabstand + tssv - 1).Value
schichtdatum = Worksheets(wochenzähler).Cells(datumzeile, sabstand + _
tssv).Value
schichttag = Worksheets(wochenzähler).Cells(tagzeile, sabstand +  _
tssv).Value
schichtbeginn = Worksheets(wochenzähler).Cells(zeilenzähler +  _
zabstand - 1, uhrzeitspalte).Value
Else
End If
If zellvergleichereinenweiter  studiname Then
schichtende = Worksheets(wochenzähler).Cells(zeilenzähler +  _
zabstand, uhrzeitspalte).Value
Print #1, br
Print #1, schichttag, schichtdatum, schichtart
If schichtkommentar  "" Then
Print #1, schichtkommentar
End If
Print #1, "von " + schichtbeginn + " bis " + schichtende
'http://vba1.de/vba/053dateiexport.php
'http://www.online-excel.de/excel/singsel_vba.php?f=49
'https://www.freebasic-portal.de/befehlsreferenz/print-datei-483.html
Else
End If
Else
End If
Next
Next
Next
Next
End If
Next
'----- Beginn 2. Block Textausgabe-----'
Close #1    'Zieldatei schließen
zeigen = Shell(Environ("windir") & "\notepad.exe " & Datei, 1)
Exit Sub
Fehler:
Close #1
MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
& "Beschreibung: " & Err.Description _
, vbCritical, "Fehler"
'----- Ende 2. Block Textausgabe-----'
End Sub

Anzeige
AW: FehlerNr:: 13 Typen unverträglich - Warum?
10.11.2015 12:32:16
B.
Oh, ich hatte beim letzten Post vergessen den Haken für "noch nicht beantwortet" zu setzen...

kein FehlerNr: 13
10.11.2015 13:17:31
Rudi
Hallo,
prüfestudi läuft durch.
btw: vermeide Umlaute in VBA.
Gruß
Rudi

AW: kein FehlerNr: 13
10.11.2015 13:53:51
B.
Hi,
ja, weil die Wochenschleife nur ein mal durchläuft. Wenn man "For wochenzähler = 1 To 1" durch "For wochenzähler = 1 To 5" ersetzt funktioniert es nicht mehr.

AW: kein FehlerNr: 13
10.11.2015 15:08:59
B.
Hallo
ich habe mir die Datei, die ich hochgeladen habe, noch einmal angeschaut. Sie funktioniert tatsächlich auch dann, wenn man die Wochenschleife höher setzt. Ich verstehe nicht warum...
Anscheinend kam der Fehler durch die Daten in den Tabellenblättern zustande. Ich hatte die echten Daten vor dem Hochladen anonymisiert (durch Dummy-Daten ersetzt).
Naja, danke für die Hilfe trotzdem!
Anzeige

146 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige