PDA

Vollständige Version anzeigen : Excel Modul Laufzeitfehler 1004


aflamina
03.07.2014, 13:38
Hallo,

ich versuche gerade ein kleiner Modul zu programmieren, dass später eine grafische Darstellung der Abläufe (ala MS-Project) herausgibt.

Ich bekomme nun zum zigtausendsten Mal die Fehlermelden:
Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler

Ich habe bereits alles doppelt gecheckt und unnötige Zuweisungen gemacht nur um sicher zu gehen, dass es nicht daran liegt.

Kurze Info:
Spalte A enthält die Abläufe namentlich
Spalte B enthält den Anfangtermin und Spalte C den Endtermin
Es besteht kein Blattschutz

Option Explicit

Sub Darstellung()
Dim anfang_dat As Date, ende_dat As Date, von As Date, bis As Date
Dim value_row As Integer, int_row As Integer, int_column As Integer, i_bis As Integer, i_von As Integer

anfang_dat = Cells(2, 2).Value
ende_dat = "00.00.0000"
von = "00.00.0000"
bis = "00.00.0000"
value_row = 2
int_row = 2
int_column = 4
i_bis = 0
i_von = 0

'Bestimmen der Datenmenge
Do
value_row = value_row + 1
Loop Until IsEmpty(Cells(value_row, 3))
value_row = value_row - 1
ende_dat = Cells(value_row, 3).Value

'Eintrage der Datum
Do
If Cells(1, int_column).Value <> anfang_dat Then
Cells(1, int_column).Value = anfang_dat
End If
anfang_dat = anfang_dat + 1
int_column = int_column + 1
Loop Until anfang_dat = ende_dat

int_column = 4
i_von = 4

Do
'Bestimmen der Grenzen
von = Cells(int_row, int_column - 2).Value
bis = Cells(int_row, int_column - 1).Value

'Bestimmen der Spalte von
Do
i_von = i_von + 1
Loop Until Cells(1, i_von).Value = von

'Bestimmen der Spalte bis
i_bis = i_von
Do
i_bis = i_bis + 1
Loop Until Cells(1, i_bis).Value = bis

'Färben der Zellen
If (int_row Mod 2) = 1 Then
Range(Cells(int_row, i_von), Cells(int_row, i_bis)).Interior.Color = RGB(121, 179, 206)
Else
Range(Cells(int_row, i_von), Cells(int_row, i_bis)).Interior.Color = RGB(176, 196, 191)
End If
int_row = int_row + 1
Loop Until int_row = value_row

End Sub


Vielleicht sieht jemand mehr als ich und könnte weiter helfen oder Vorschlag machen. Und wenn nicht, trotzdem danke ;)

Ganz vergessen zu sagen, an welcher Stelle es hakt.
Die Tage werden soweit eingefügt und dann bleibt hier dran hängen


'Bestimmen der Spalte von
Do
i_von = i_von + 1
Loop Until Cells(1, i_von).Value = von

Mc Santa
03.07.2014, 13:46
Hallo,

der Fehler liegt prinzipiell daran, dass sich folgende Schleife aufhängt:
Do
i_von = i_von + 1
Loop Until Cells(1, i_von).Value = von

Die Bedingung wird nie erfüllt und Excel durchläuft alle Spalten. In Excel 2003 ist nach der 256. Spalte Schluss und in der nächsten Schleife wird versucht die 257. Spalte abzufragen ( Cells(1, 257) ), aber diese Zelle gibt es nicht --> Fehler. (In Excel 2007 ist der Fehler analog dazu, nur später ;)

Mir sind auch sonst einige Dinge aufgefallen, die ich anders lösen würde.
Bitte lade eine Beispieldatei hoch und erkläre, was das Makro eigentlich machen sollte, wenn es funktioniert. Ich helfe dir dann und erkläre, warum ich welche Änderungen mache :)

VG

aflamina
04.07.2014, 07:10
Hallo,

vielen Dank erstmal :)
Daran habe ich weder gedacht noch wusste ich es. Logisch...
Dieses Problem hätte ich damit gelöst:

Do Until Cells(1, i_von).Value = von
i_von = i_von + 1
If i_von > 256 Then
Exit Do
End If
Loop

Klar, sieht es nicht schön aus und bestimmt lässt es sich optimieren. Es ist der erstes Versuch ein Modul zu basteln und dann auch noch VB zu benutzen ;) Einen Schritt vor dem anderen.

So sieht es nun aus und in etwa so sollte es auch aussehen.
http://www.myimg.de/?img=Modulddbba.png

LG