Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
740to744
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
740to744
740to744
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

"Fehler beim Kompilieren" (luschi)

"Fehler beim Kompilieren" (luschi)
09.03.2006 21:27:22
selo
hallo
habe in der hochgeladenen datei einen code dank luschi
jedoch bekomme ich den fehler "Fehler beim Kompilieren"
benutzerdefinierter typ nicht definiert bei
Private Function ATC1(start As start, Ende As Date, ByRef FT As Range
hat jemand einen rat für mich
https://www.herber.de/bbs/user/31738.xls

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Fehler beim Kompilieren" (luschi)
09.03.2006 21:47:00
chris
Hallo selo, weiss zwar nicht ganz was dein Code machen soll.
Aber so kommt zumindest kein Fehler. Hilft dir das weiter ?

Sub beRechnung()
'first trying by Luschi
Dim wb As Workbook, _
ws1 As Worksheet, ws2 As Worksheet, _
rg1 As Range, rg2 As Range, _
loLetzte As Long, loI As Long, _
nArt As Integer, n1 As Long, n2 As Long, _
v As Variant, _
xlApp As Application
Set xlApp = Application
xlApp.ScreenUpdating = False
xlApp.Calculation = xlCalculationManual
xlApp.EnableEvents = False
Set wb = ThisWorkbook
Set ws1 = wb.Worksheets("gesamtplanung")
Set ws2 = wb.Worksheets("Arbeitstage")
ws1.Activate
loLetzte = IIf(IsEmpty(ws1.Cells(ws1.Rows.Count, 2)), _
ws1.Cells(ws1.Rows.Count, 2).End(xlUp).Row, ws1.Rows.Count)
For loI = 2 To loLetzte
If (ws2.Range("J7") Or ws2.Range("K7")) Then
Set rg1 = ws1.Range("C" & loI)
Set rg2 = ws1.Range("D" & loI)
If ws2.Range("J7") Then
nArt = 1
Set rg3 = wb.Names("funftagewochenamen").RefersToRange
Else
nArt = 2
Set rg3 = wb.Names("sechstagewochenamen").RefersToRange
End If
Else
nArt = 2
Set rg3 = ws1.Range("O" & loI)
End If
Select Case nArt
Case 1:    n1 = ATC1(rg1.Value, rg2.Value, rg3)
Case 2:    n1 = ATC(rg1.Value, rg2.Value, rg3)
Case 3:    v1 = rg3.Value
End Select
If nArt <= 2 Then
ws1.Cells(loI, 14).Value = n1
Else
ws1.Cells(loI, 14).Value = v1
End If
ws1.Cells(loI, 14).NumberFormat = "General"
ws1.Range(Cells(loI, 14), Cells(loI, 15)).HorizontalAlignment = xlCenter
ws1.Range(Cells(loI, 14), Cells(loI, 15)).Font.ColorIndex = 3
Set rg1 = Nothing
Set rg2 = Nothing
Set rg3 = Nothing
Next loI
'wb.Worksheets("tabelle3").Activate
Set ws1 = Nothing
Set ws2 = Nothing
Set wb = Nothing
xlApp.Calculation = xlCalculationAutomatic
xlApp.EnableEvents = True
xlApp.ScreenUpdating = True
Set xlApp = Nothing
End Sub


Function ATC1(start As Date, Ende As Date, ByVal FT As Range)
Dim C As Range, xZahl As Integer, j As Date, k As Long
xZahl = 0
For j = start To Ende
If (Weekday(j) <> 1) And (Weekday(j) <> 7) Then
xZahl = xZahl + 1
End If
Next
For k = 1 To FT.Rows.Count
Set C = FT.Cells(k, 1)
If C.Value >= start And C.Value <= Ende Then
If (Weekday(C.Value) <> 1) And (Weekday(C.Value) <> 7) Then
xZahl = xZahl - 1
End If
End If
Next j
Set C = Nothing
ATC1 = xZahl
End Function


Function ATC(start As Date, Ende As Date, ByVal FT As Range)
Dim C As Range, _
a%, b%, i%, xZahl As Integer
a = 8 - Weekday(start)
b = Weekday(Ende) - 1
xZahl = (Ende - start) - (a + b)
xZahl = xZahl - (xZahl / 7)
xZahl = xZahl + a + b
If Weekday(start) = 1 Then
xZahl = xZahl - 1
End If
For i = 1 To FT.Rows.Count
Set C = FT.Cells(i, 1)
If C.Value >= start And C.Value <= Ende Then
If Weekday(C.Value) <> 1 Then
xZahl = xZahl - 1
End If
End If
Next i
Set C = Nothing
ATC = xZahl
End Function

Anzeige
AW: "Fehler beim Kompilieren" (luschi)
09.03.2006 22:06:25
selo
hallo chris b
es treten weitere fehler auf
das ist die aufgabe gewesen die ich zu lösen versuchte
hallo an die profis
habe ein problem das bei einem bestimmten code als schleife immer auf die functionen atc1 oder atc gesprungen wird ohne irgendwelche verweise darauf. Habe in mehreren foren gefragt aber keiner hat eine lösung für mich.
Nun habe ich mir gedacht den code

Sub berechnung ()
Worksheets("gesamtplanung").Activate
With ActiveSheet
Dim loLetzte As Long
Dim loI As Long
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
For loI = 2 To loLetzte
Cells(loI, 14).FormulaLocal = "=WENN(Arbeitstage!$J$7=WAHR;atc1(c" & loI & ";d" & loI & ";Arbeitstage!funftagewochenamen);(WENN(Arbeitstage!$K$7=WAHR;atc(c" & loI & ";d" & loI & ";Arbeitstage!sechstagewochenamen);o" & loI & ")))"
Cells(loI, 14).NumberFormat = "General"
Range(Cells(loI, 14), Cells(loI, 15)).HorizontalAlignment = xlCenter
Next loI
Range(Cells(loI, 14), Cells(loI, 15)).Font.ColorIndex = 3
End With
'Worksheets("tabelle3").Activate
End Sub

welcher normalerweise auf die functionen

Function ATC1(Start, Ende, FT)
Dim C As Range
ATC1 = 0
For j = Start To Ende
If (Weekday(j) <> 1) And (Weekday(j) <> 7) Then ATC1 = ATC1 + 1
Next
For j = 1 To FT.Rows.Count
Set C = FT.Cells(j, 1)
If C >= Start And C <= Ende Then
If (Weekday(C) <> 1) And (Weekday(C) <> 7) Then ATC1 = ATC1 - 1
End If
Next j
End Function

sowie

Function ATC(Start, Ende, FT)
Dim C As Range
Dim a%, b%, i%
a = 8 - Weekday(Start)
b = Weekday(Ende) - 1
ATC = (Ende - Start) - (a + b)
ATC = ATC - (ATC / 7)
ATC = ATC + a + b
If Weekday(Start) = 1 Then ATC = ATC - 1
For i = 1 To FT.Rows.Count
Set C = FT.Cells(i, 1)
If C >= Start And C <= Ende Then
If Weekday(C) <> 1 Then ATC = ATC - 1
End If
Next i
End Function

zugreift umschreiben damit es ein einzelner code daraus wird ohne das auf die functions separat aus einem modul zugegriffen werden muß während der berechnung.
Jedoch habe ich das problem ich weiß nicht wie ich das hinbekommen kann.
kann jeden rat gebrauchen
bedanke mich schon im voraus
gruß
selo
Anzeige
AW: "Fehler beim Kompilieren" (luschi)
09.03.2006 22:33:03
Leo
Hi,
wozu die ganzen Umstände, mit den seperaten Functions ist schon der richtige Weg. Welchen Vorteil sollte es deiner Meinung nach haben, alles in einem zu machen?
mfg Leo
AW: "Fehler beim Kompilieren" (luschi)
09.03.2006 23:11:12
selo
hallo leo
mein problem ist das ein code von mir das keinen bezug zu den functions hat
manchmal auf einmal mittendrin zu einem der functions springt und die berechnung hört nicht mehr auf läuft dann wie eine endlosschleife.habe alles versucht die namenszuweisungen verändert und option explicit verwendet doch da half nichts, deshalb dachte ich wenn hier die functions nicht mehr existieren das dann auch der sprung nicht stattfindet.
habe den code von luschi zum laufen bekommen jedoch springt hier der code wieder auf die functions.
mfg selo
Anzeige
AW: "Fehler beim Kompilieren" (luschi)
09.03.2006 23:17:14
Leo
Hi,
dann ist was an dem ganzen Code übel, was, kann ich aus der Ferne nicht beurteilen.
Prinzipiell ist die Modularisierung der bessere Weg.
mfg Leo
AW: "Fehler beim Kompilieren" (luschi)
09.03.2006 23:23:07
selo
hallo leo
habe die functions in das tabellenblatt in ein modul sowie beide in unterschiedliche module gesteckt jedesmal das selbe
und das ist der übeltäter bei dem es die probleme gibt

Sub selo_berechnung()
Worksheets("gx_berechnung").Activate
With ActiveSheet
Dim loLetzte As Long
Dim loI As Long
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
For loI = 2 To loLetzte
Cells(9, 16).FormulaLocal = "=8"
Cells(10, 16).FormulaLocal = "=7"
Cells(10, 17).FormulaLocal = "=p9*p10"
Cells(11, 18).FormulaLocal = "=q11-10"
Cells(12, 18).FormulaLocal = "=q12+10"
Cells(11, 17).FormulaLocal = "=KKLEINSTE(c2:c" & loLetzte & ";1)"
Cells(loI, 5).FormulaLocal = "=WENN(d" & loI & "<HEUTE();0;d" & loI & "-c" & loI & "-f" & loI & ")"
Cells(loI, 6).FormulaLocal = "=WENN((c" & loI & ">HEUTE())*(d" & loI & ">HEUTE());0;HEUTE()-c" & loI & ")"
Cells(loI, 7).FormulaLocal = "=d" & loI & "-c" & loI & ""
Cells(loI, 7).NumberFormat = "General"
Cells(loI, 8).FormulaLocal = "=$q$10*g" & loI
Cells(loI, 9).FormulaLocal = "=WENN(g" & loI & "=0;0;h" & loI & "/g" & loI & "/$p$9)"
Cells(loI, 10).FormulaLocal = "=DATUM(JAHR(KKLEINSTE(C1:C" & loLetzte & ";1) );1;1)"
Cells(loI, 10).NumberFormat = "dd/mm/yy"
Cells(loI, 11).FormulaLocal = "=c" & loI & "-j" & loI
Cells(loI, 12).FormulaLocal = "=d" & loI & "-c" & loI
Cells(loI, 12).NumberFormat = "General"
Cells(loI, 13).FormulaLocal = "=j" & loI & "+k" & loI & "+l" & loI
Cells(loI, 13).NumberFormat = "dd/mm/yy"
Cells(loI, 15).FormulaLocal = "=g" & loI & "+1"
Range(Cells(loI, 5), Cells(loI, 13)).HorizontalAlignment = xlCenter
Range(Cells(loI, 5), Cells(loI, 13)).Font.ColorIndex = 3
Next loI
Cells(12, 17).FormulaLocal = "=max(d2:d" & loLetzte & ";1)"
End With
Worksheets("gx_berechnung").min_max_anpassen
End Sub

Anzeige
AW: "Fehler beim Kompilieren" (luschi)
10.03.2006 00:01:36
Leo
Hi,
was macht es für einen Sinn, eine Zelle mit einer Formel zu belegen, wenn es auch eine Konstante tut?
Cells(9, 16).FormulaLocal = "=8"
richtig wäre:
Cells(9, 16)= 8
Stell am Anfang deines Codes die berechnung auf manuell und Schalte die Events aus,
am Schluss natürlich wieder Retour.
mfg Leo

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige