Anzeige
Archiv - Navigation
240to244
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
240to244
240to244
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Function funkt bei 2000, aber nicht bei 97

Function funkt bei 2000, aber nicht bei 97
08.04.2003 09:13:27
Dirk
Hallo zusammen,

ich habe ein komisches Problem: während eine SubFunction, die ich zu Hause geschrieben habe (Excel 2000), dort auch super läuft, zeigt sie bei der Arbeit (Excel 97) nur den #Wert-Fehler an. Da es sich um eine Anfänger-Programmierung handelt, die nur einfache Befehle enthält, habe ich keine Idee, woran das liegen könnte. Anmerken möchte ich, dass die Prozedur sehr lang ist und aus dilettantischen if-goto schleifen besteht und auf werte aus anliegenden Tabellenblättern zurückgreift. Die Datei samt Tabellenblätter ist die gleiche.

Dankbar für Tipps

Dirk


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Function funkt bei 2000, aber nicht bei 97
08.04.2003 09:16:37
Forum

Hallo Dirk

auch wenn der Code lang ist. Die Glaskugel haben hier nur wenige.
Posten wäre schon ratsam.

Gruß

Re: Function funkt bei 2000, aber nicht bei 97
08.04.2003 09:22:53
Jan

es besteht die Möglichkeit, das du die Variablen nicht richtig Definiert hast.
Dim x As Double
oder versuche die Werte noch umzuwandeln
Cells(1, 3).Value = CDbl(x)
MfG
Jan

Re: Function funkt bei 2000, aber nicht bei 97
08.04.2003 09:26:15
Dirk

Kein Problem. Hier die FUnktion, die nicht funktioniert, zu Hause aber schon. Peinlich und echt lang:
die Teile "Preisgruppe" und "Festpreis" funktionieren, "Standardmaske" und "Prozenmaske" nicht
Kann ich das überhaupt jemanden zumuten?

Public Function MW(Maskengruppe As Integer, Maskennummer As Integer, MF, SG As Single, PG As Single)

Dim PGAbzug As Single
Dim GAbzug As Single
Dim MFAbZu As Single
Dim MaZeile As Long
Dim MFZeile As Long
Dim SyGZeile As Long
Dim SGZeile As Long


' Maskenzeile in GMaske1 identifizieren
MaZeile = 2
MaAnfang:
If Sheets("GMaske1").Cells(MaZeile, 1) = Maskengruppe And Sheets("GMaske1").Cells(MaZeile, 2) = Maskennummer Then GoTo MaEnde
MaZeile = MaZeile + 1
GoTo MaAnfang
MaEnde:

' Standardmaske?
If Sheets("GMaske1").Cells(MaZeile, 1) = Maskengruppe And Sheets("GMaske1").Cells(MaZeile, 2) = Maskennummer And Sheets("GMaske1").Cells(MaZeile, 11) = "N" And Sheets("GMaske1").Cells(MaZeile, 12) = "N" And Sheets("GMaske1").Cells(MaZeile, 13) = "N" Then GoTo Standardmaske
' reine PG-Maske?
If Sheets("GMaske1").Cells(MaZeile, 1) = Maskengruppe And Sheets("GMaske1").Cells(MaZeile, 2) = Maskennummer And Sheets("GMaske1").Cells(MaZeile, 11) = "N" And Sheets("GMaske1").Cells(MaZeile, 12) = "J" And Sheets("GMaske1").Cells(MaZeile, 13) = "N" Then GoTo PGMaske
' Prozentmaske?
If Sheets("GMaske1").Cells(MaZeile, 1) = Maskengruppe And Sheets("GMaske1").Cells(MaZeile, 2) = Maskennummer And Sheets("GMaske1").Cells(MaZeile, 11) = "N" And Sheets("GMaske1").Cells(MaZeile, 12) = "N" And Sheets("GMaske1").Cells(MaZeile, 13) = "J" Then GoTo Prozentmaske
' Festpreismaske?
If Sheets("GMaske1").Cells(MaZeile, 1) = Maskengruppe And Sheets("GMaske1").Cells(MaZeile, 2) = Maskennummer And Sheets("GMaske1").Cells(MaZeile, 11) = "J" And Sheets("GMaske1").Cells(MaZeile, 12) = "N" And Sheets("GMaske1").Cells(MaZeile, 13) = "N" Then GoTo FPMaske

Standardmaske:
' vor "Systemgrenzen-Zeile identifizieren" muss ich, weil 120 dort nicht reinpasst, zu 119,999 machen (später bitte edler)
If SG = 120 Then SG = 119.999

' Systemgrenzen-Zeile identifizieren
SyGZeile = 2
StandardSyGAnfang:
If Sheets("GMaske2").Cells(SyGZeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(SyGZeile, 2) = Maskennummer And Sheets("GMaske2").Cells(SyGZeile, 3) = "S" And Sheets("GMaske2").Cells(SyGZeile, 7) <= SG And Sheets("GMaske2").Cells(SyGZeile, 8) > SG Then GoTo StandardSyGEnde
SyGZeile = SyGZeile + 1
GoTo StandardSyGAnfang
StandardSyGEnde:

' Systemgrenzen, MF korrigieren
If Sheets("GMaske2").Cells(SyGZeile, 9) > MF Then MF = Sheets("GMaske2").Cells(SyGZeile, 9)
If Sheets("GMaske2").Cells(SyGZeile, 10) < MF Then MF = Sheets("GMaske2").Cells(SyGZeile, 10)

' im Optimalgewicht? (kommt jetzt erst, weil ich bei og genau über GewAbzüge springen muss)
If Sheets("GMaske1").Cells(MaZeile, 7) <= SG And Sheets("GMaske1").Cells(MaZeile, 8) > SG Then GoTo StandardOGEnde
' wichtig: OGTiere nach OGEnde leiten!!!!

' Gewicht-Zeile identifizieren
SGZeile = 2
StandardSGAnfang:
If Sheets("GMaske2").Cells(SGZeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(SGZeile, 2) = Maskennummer And Sheets("GMaske2").Cells(SGZeile, 3) = "G" And Sheets("GMaske2").Cells(SGZeile, 7) <= SG And Sheets("GMaske2").Cells(SGZeile, 8) > SG Then GoTo StandardSGEnde
SGZeile = SGZeile + 1
GoTo StandardSGAnfang
StandardSGEnde:

' Gewichtsabzüge
' Übergewichtsabzüge: wenn ich also in einem Intervall oberhalb des OGs liege
If Sheets("GMaske2").Cells(SGZeile, 8) > Sheets("GMaske1").Cells(MaZeile, 8) Then GAbzug = Sheets("GMaske2").Cells(SGZeile, 14) + (SG - Sheets("GMaske2").Cells(SGZeile, 7)) * Sheets("GMaske2").Cells(SGZeile, 13)
' Untergewichtsabzüge: wenn ich also in einem Intervall unterhalb des OGs liege
If Sheets("GMaske2").Cells(SGZeile, 7) < Sheets("GMaske1").Cells(MaZeile, 7) Then GAbzug = Sheets("GMaske2").Cells(SGZeile, 14) + (Sheets("GMaske2").Cells(SGZeile, 8) - SG) * Sheets("GMaske2").Cells(SGZeile, 13)
GoTo StandardSGEnde2
StandardOGEnde:
GAbzug = 0
StandardSGEnde2:

' Muskelfleisch-Zeile identifizieren
MFZeile = 2
StandardMFAnfang:
If Sheets("GMaske2").Cells(MFZeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(MFZeile, 2) = Maskennummer And Sheets("GMaske2").Cells(MFZeile, 3) = "M" And Sheets("GMaske2").Cells(MFZeile, 5) <= MF And Sheets("GMaske2").Cells(MFZeile, 6) >= MF Then GoTo StandardMFEnde
MFZeile = MFZeile + 1
GoTo StandardMFAnfang
StandardMFEnde:


' später vielleicht: wird erst 0 gesetzt, falls MF gleich BasisMFAbZu = 0
' Muskelfleischzuschlag: wenn ich also in einem Intervall oberhalb der Basis liege
If Sheets("GMaske2").Cells(MFZeile, 6) > Sheets("GMaske1").Cells(MaZeile, 6) Then MFAbZu = Sheets("GMaske2").Cells(MFZeile, 14) + (MF - Sheets("GMaske2").Cells(MFZeile, 5)) * Sheets("GMaske2").Cells(MFZeile, 13)
' Muskelfleischabzug: wenn ich also in einem Intervall unterhalb der Basis liege
If Sheets("GMaske2").Cells(MFZeile, 5) < Sheets("GMaske1").Cells(MaZeile, 6) Then MFAbZu = Sheets("GMaske2").Cells(MFZeile, 14) + (Sheets("GMaske2").Cells(MFZeile, 6) - MF) * Sheets("GMaske2").Cells(MFZeile, 13)

' Standardmaske verlassen
PGAbzug = 0
GoTo Maskenwert

PGMaske:
Dim PG1Zeile As Long
Dim PG2Zeile As Long
Dim PG1 As Single
Dim PG2 As Single
Dim PG1Abzug As Single
Dim PG2Abzug As Single
Dim Zwischen As Single
' Preisgruppe
' PG-Zeile identifizieren
PG1 = Application.WorksheetFunction.RoundDown(PG, 0)
'PG1 = "=RoundDown(PG, 0)"
PG2 = PG1 + 1
Zwischen = PG - PG1

PG1Zeile = 2
PGPG1Anfang:
If Sheets("GMaske2").Cells(PG1Zeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(PG1Zeile, 2) = Maskennummer And Sheets("GMaske2").Cells(PG1Zeile, 3) = "P" And Sheets("GMaske2").Cells(PG1Zeile, 4) = PG1 Then GoTo PGPG1Ende
PG1Zeile = PG1Zeile + 1
GoTo PGPG1Anfang
PGPG1Ende:
' Preisgruppenabzug1:
PGAbzug1 = Sheets("GMaske2").Cells(PG1Zeile, 14) + Sheets("GMaske2").Cells(PG1Zeile, 13)

PG2Zeile = 2
PGPG2Anfang:
If Sheets("GMaske2").Cells(PG2Zeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(PG2Zeile, 2) = Maskennummer And Sheets("GMaske2").Cells(PG2Zeile, 3) = "P" And Sheets("GMaske2").Cells(PG2Zeile, 4) = PG2 Then GoTo PGPG2Ende
PG2Zeile = PG2Zeile + 1
GoTo PGPG2Anfang
PGPG2Ende:
' Preisgruppenabzug2:
PGAbzug2 = Sheets("GMaske2").Cells(PG2Zeile, 14) + Sheets("GMaske2").Cells(PG2Zeile, 13)

PGAbzug = (1 - Zwischen) * PGAbzug1 + Zwischen * PGAbzug2

' PGMaske verlassen
MFAbZu = 0
GAbzug = 0
GoTo Maskenwert

Prozentmaske:

' im Optimalgewicht? (kommt jetzt, weil OG hier nicht bei Systemgrenzem dabei ist, aber wenn ja, bitte über GewAbzüge springen)
If Sheets("GMaske1").Cells(MaZeile, 7) <= SG And Sheets("GMaske1").Cells(MaZeile, 8) >= SG Then GoTo ProzentMuskelfleisch
' siehe Umleitung: OGTiere (kein GAbzug) zum Muskelfleisch leiten

' "Systemgrenzen"-Zeile identifizieren
SyGZeile = 2
ProzentSyGAnfang:
If Sheets("GMaske2").Cells(SyGZeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(SyGZeile, 2) = Maskennummer And Sheets("GMaske2").Cells(SyGZeile, 3) = "S" And Sheets("GMaske2").Cells(SyGZeile, 7) <= SG And Sheets("GMaske2").Cells(SyGZeile, 8) > SG Then GoTo ProzentSyGEnde
SyGZeile = SyGZeile + 1
GoTo ProzentSyGAnfang
ProzentSyGEnde:

' Gewicht-Zeile identifizieren
SGZeile = 2
ProzentSGAnfang:
If Sheets("GMaske2").Cells(SGZeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(SGZeile, 2) = Maskennummer And Sheets("GMaske2").Cells(SGZeile, 3) = "G" And Sheets("GMaske2").Cells(SGZeile, 7) <= SG And Sheets("GMaske2").Cells(SGZeile, 8) > SG Then GoTo ProzentSGEnde
SGZeile = SGZeile + 1
GoTo ProzentSGAnfang
ProzentSGEnde:

' Gewichtsabzüge
GAbzug = Sheets("GMaske2").Cells(SyGZeile, 13) * (Sheets("GMaske2").Cells(SGZeile, 15) / 100)

' Umleitung
GoTo ProzentMuskelfleisch2
ProzentMuskelfleisch:
GAbzug = 0
ProzentMuskelfleisch2:

' Muskelfleisch-Zeile identifizieren
MFZeile = 2
ProzentMFAnfang:
If Sheets("GMaske2").Cells(MFZeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(MFZeile, 2) = Maskennummer And Sheets("GMaske2").Cells(MFZeile, 3) = "M" And Sheets("GMaske2").Cells(MFZeile, 5) <= MF And Sheets("GMaske2").Cells(MFZeile, 6) >= MF Then GoTo ProzentMFEnde
MFZeile = MFZeile + 1
GoTo ProzentMFAnfang
ProzentMFEnde:

' Muskelfleischabzüge und -zuschläge
' später vielleicht: wird erst 0 gesetzt, falls MF gleich BasisMFAbZu = 0
' Muskelfleischzuschlag: wenn ich also in einem Intervall oberhalb der Basis liege
If Sheets("GMaske2").Cells(MFZeile, 6) > Sheets("GMaske1").Cells(MaZeile, 6) Then MFAbZu = Sheets("GMaske2").Cells(MFZeile, 14) + (MF - Sheets("GMaske2").Cells(MFZeile, 5)) * Sheets("GMaske2").Cells(MFZeile, 13)
' Muskelfleischabzug: wenn ich also in einem Intervall unterhalb der Basis liege
If Sheets("GMaske2").Cells(MFZeile, 5) < Sheets("GMaske1").Cells(MaZeile, 6) Then MFAbZu = Sheets("GMaske2").Cells(MFZeile, 14) + (Sheets("GMaske2").Cells(MFZeile, 6) - MF) * Sheets("GMaske2").Cells(MFZeile, 13)

' Prozentmaske verlassen
PGAbzug = 0
GoTo Maskenwert

FPMaske:
' Festpreismaske sofort verlassen
MFAbZu = 0
GAbzug = 0
PGAbzug = 0
GoTo Maskenwert


Maskenwert:
MW = MFAbZu + GAbzug + PGAbzug

End Function


Anzeige
Re: Function funkt bei 2000, aber nicht bei 97
08.04.2003 09:27:48
Dirk

Es könnte daran liegen, geht nur Double?

Re: Function funkt bei 2000, aber nicht bei 97
08.04.2003 09:35:51
hier der code

Kein Problem. Hier die FUnktion, die nicht funktioniert, zu Hause aber schon. Peinlich und echt lang:
die Teile "Preisgruppe" und "Festpreis" funktionieren, "Standardmaske" und "Prozenmaske" nicht
Kann ich das überhaupt jemanden zumuten?
Public Function MW(Maskengruppe As Integer, Maskennummer As Integer, MF, SG As Single, PG As Single)

Dim PGAbzug As Single
Dim GAbzug As Single
Dim MFAbZu As Single
Dim MaZeile As Long
Dim MFZeile As Long
Dim SyGZeile As Long
Dim SGZeile As Long


' Maskenzeile in GMaske1 identifizieren
MaZeile = 2
MaAnfang:
If Sheets("GMaske1").Cells(MaZeile, 1) = Maskengruppe And Sheets("GMaske1").Cells(MaZeile, 2) = Maskennummer Then GoTo MaEnde
MaZeile = MaZeile + 1
GoTo MaAnfang
MaEnde:

' Standardmaske?
If Sheets("GMaske1").Cells(MaZeile, 1) = Maskengruppe And Sheets("GMaske1").Cells(MaZeile, 2) = Maskennummer And Sheets("GMaske1").Cells(MaZeile, 11) = "N" And Sheets("GMaske1").Cells(MaZeile, 12) = "N" And Sheets("GMaske1").Cells(MaZeile, 13) = "N" Then GoTo Standardmaske
' reine PG-Maske?
If Sheets("GMaske1").Cells(MaZeile, 1) = Maskengruppe And Sheets("GMaske1").Cells(MaZeile, 2) = Maskennummer And Sheets("GMaske1").Cells(MaZeile, 11) = "N" And Sheets("GMaske1").Cells(MaZeile, 12) = "J" And Sheets("GMaske1").Cells(MaZeile, 13) = "N" Then GoTo PGMaske
' Prozentmaske?
If Sheets("GMaske1").Cells(MaZeile, 1) = Maskengruppe And Sheets("GMaske1").Cells(MaZeile, 2) = Maskennummer And Sheets("GMaske1").Cells(MaZeile, 11) = "N" And Sheets("GMaske1").Cells(MaZeile, 12) = "N" And Sheets("GMaske1").Cells(MaZeile, 13) = "J" Then GoTo Prozentmaske
' Festpreismaske?
If Sheets("GMaske1").Cells(MaZeile, 1) = Maskengruppe And Sheets("GMaske1").Cells(MaZeile, 2) = Maskennummer And Sheets("GMaske1").Cells(MaZeile, 11) = "J" And Sheets("GMaske1").Cells(MaZeile, 12) = "N" And Sheets("GMaske1").Cells(MaZeile, 13) = "N" Then GoTo FPMaske

Standardmaske:
' vor "Systemgrenzen-Zeile identifizieren" muss ich, weil 120 dort nicht reinpasst, zu 119,999 machen (später bitte edler)
If SG = 120 Then SG = 119.999

' Systemgrenzen-Zeile identifizieren
SyGZeile = 2
StandardSyGAnfang:
If Sheets("GMaske2").Cells(SyGZeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(SyGZeile, 2) = Maskennummer And Sheets("GMaske2").Cells(SyGZeile, 3) = "S" And Sheets("GMaske2").Cells(SyGZeile, 7) <= SG And Sheets("GMaske2").Cells(SyGZeile, 8) > SG Then GoTo StandardSyGEnde
SyGZeile = SyGZeile + 1
GoTo StandardSyGAnfang
StandardSyGEnde:

' Systemgrenzen, MF korrigieren
If Sheets("GMaske2").Cells(SyGZeile, 9) > MF Then MF = Sheets("GMaske2").Cells(SyGZeile, 9)
If Sheets("GMaske2").Cells(SyGZeile, 10) < MF Then MF = Sheets("GMaske2").Cells(SyGZeile, 10)

' im Optimalgewicht? (kommt jetzt erst, weil ich bei og genau über GewAbzüge springen muss)
If Sheets("GMaske1").Cells(MaZeile, 7) <= SG And Sheets("GMaske1").Cells(MaZeile, 8) > SG Then GoTo StandardOGEnde
' wichtig: OGTiere nach OGEnde leiten!!!!

' Gewicht-Zeile identifizieren
SGZeile = 2
StandardSGAnfang:
If Sheets("GMaske2").Cells(SGZeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(SGZeile, 2) = Maskennummer And Sheets("GMaske2").Cells(SGZeile, 3) = "G" And Sheets("GMaske2").Cells(SGZeile, 7) <= SG And Sheets("GMaske2").Cells(SGZeile, 8) > SG Then GoTo StandardSGEnde
SGZeile = SGZeile + 1
GoTo StandardSGAnfang
StandardSGEnde:

' Gewichtsabzüge
' Übergewichtsabzüge: wenn ich also in einem Intervall oberhalb des OGs liege
If Sheets("GMaske2").Cells(SGZeile, 8) > Sheets("GMaske1").Cells(MaZeile, 8) Then GAbzug = Sheets("GMaske2").Cells(SGZeile, 14) + (SG - Sheets("GMaske2").Cells(SGZeile, 7)) * Sheets("GMaske2").Cells(SGZeile, 13)
' Untergewichtsabzüge: wenn ich also in einem Intervall unterhalb des OGs liege
If Sheets("GMaske2").Cells(SGZeile, 7) < Sheets("GMaske1").Cells(MaZeile, 7) Then GAbzug = Sheets("GMaske2").Cells(SGZeile, 14) + (Sheets("GMaske2").Cells(SGZeile, 8) - SG) * Sheets("GMaske2").Cells(SGZeile, 13)
GoTo StandardSGEnde2
StandardOGEnde:
GAbzug = 0
StandardSGEnde2:

' Muskelfleisch-Zeile identifizieren
MFZeile = 2
StandardMFAnfang:
If Sheets("GMaske2").Cells(MFZeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(MFZeile, 2) = Maskennummer And Sheets("GMaske2").Cells(MFZeile, 3) = "M" And Sheets("GMaske2").Cells(MFZeile, 5) <= MF And Sheets("GMaske2").Cells(MFZeile, 6) >= MF Then GoTo StandardMFEnde
MFZeile = MFZeile + 1
GoTo StandardMFAnfang
StandardMFEnde:

' später vielleicht: wird erst 0 gesetzt, falls MF gleich BasisMFAbZu = 0
' Muskelfleischzuschlag: wenn ich also in einem Intervall oberhalb der Basis liege
If Sheets("GMaske2").Cells(MFZeile, 6) > Sheets("GMaske1").Cells(MaZeile, 6) Then MFAbZu = Sheets("GMaske2").Cells(MFZeile, 14) + (MF - Sheets("GMaske2").Cells(MFZeile, 5)) * Sheets("GMaske2").Cells(MFZeile, 13)
' Muskelfleischabzug: wenn ich also in einem Intervall unterhalb der Basis liege
If Sheets("GMaske2").Cells(MFZeile, 5) < Sheets("GMaske1").Cells(MaZeile, 6) Then MFAbZu = Sheets("GMaske2").Cells(MFZeile, 14) + (Sheets("GMaske2").Cells(MFZeile, 6) - MF) * Sheets("GMaske2").Cells(MFZeile, 13)

' Standardmaske verlassen
PGAbzug = 0
GoTo Maskenwert

PGMaske:
Dim PG1Zeile As Long
Dim PG2Zeile As Long
Dim PG1 As Single
Dim PG2 As Single
Dim PG1Abzug As Single
Dim PG2Abzug As Single
Dim Zwischen As Single
' Preisgruppe
' PG-Zeile identifizieren
PG1 = Application.WorksheetFunction.RoundDown(PG, 0)
'PG1 = "=RoundDown(PG, 0)"
PG2 = PG1 + 1
Zwischen = PG - PG1

PG1Zeile = 2
PGPG1Anfang:
If Sheets("GMaske2").Cells(PG1Zeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(PG1Zeile, 2) = Maskennummer And Sheets("GMaske2").Cells(PG1Zeile, 3) = "P" And Sheets("GMaske2").Cells(PG1Zeile, 4) = PG1 Then GoTo PGPG1Ende
PG1Zeile = PG1Zeile + 1
GoTo PGPG1Anfang
PGPG1Ende:
' Preisgruppenabzug1:
PGAbzug1 = Sheets("GMaske2").Cells(PG1Zeile, 14) + Sheets("GMaske2").Cells(PG1Zeile, 13)

PG2Zeile = 2
PGPG2Anfang:
If Sheets("GMaske2").Cells(PG2Zeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(PG2Zeile, 2) = Maskennummer And Sheets("GMaske2").Cells(PG2Zeile, 3) = "P" And Sheets("GMaske2").Cells(PG2Zeile, 4) = PG2 Then GoTo PGPG2Ende
PG2Zeile = PG2Zeile + 1
GoTo PGPG2Anfang
PGPG2Ende:
' Preisgruppenabzug2:
PGAbzug2 = Sheets("GMaske2").Cells(PG2Zeile, 14) + Sheets("GMaske2").Cells(PG2Zeile, 13)

PGAbzug = (1 - Zwischen) * PGAbzug1 + Zwischen * PGAbzug2


' PGMaske verlassen
MFAbZu = 0
GAbzug = 0
GoTo Maskenwert

Prozentmaske:

' im Optimalgewicht? (kommt jetzt, weil OG hier nicht bei Systemgrenzem dabei ist, aber wenn ja, bitte über GewAbzüge springen)
If Sheets("GMaske1").Cells(MaZeile, 7) <= SG And Sheets("GMaske1").Cells(MaZeile, 8) >= SG Then GoTo ProzentMuskelfleisch
' siehe Umleitung: OGTiere (kein GAbzug) zum Muskelfleisch leiten

' "Systemgrenzen"-Zeile identifizieren
SyGZeile = 2
ProzentSyGAnfang:
If Sheets("GMaske2").Cells(SyGZeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(SyGZeile, 2) = Maskennummer And Sheets("GMaske2").Cells(SyGZeile, 3) = "S" And Sheets("GMaske2").Cells(SyGZeile, 7) <= SG And Sheets("GMaske2").Cells(SyGZeile, 8) > SG Then GoTo ProzentSyGEnde
SyGZeile = SyGZeile + 1
GoTo ProzentSyGAnfang
ProzentSyGEnde:

' Gewicht-Zeile identifizieren
SGZeile = 2
ProzentSGAnfang:
If Sheets("GMaske2").Cells(SGZeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(SGZeile, 2) = Maskennummer And Sheets("GMaske2").Cells(SGZeile, 3) = "G" And Sheets("GMaske2").Cells(SGZeile, 7) <= SG And Sheets("GMaske2").Cells(SGZeile, 8) > SG Then GoTo ProzentSGEnde
SGZeile = SGZeile + 1
GoTo ProzentSGAnfang
ProzentSGEnde:

' Gewichtsabzüge
GAbzug = Sheets("GMaske2").Cells(SyGZeile, 13) * (Sheets("GMaske2").Cells(SGZeile, 15) / 100)

' Umleitung
GoTo ProzentMuskelfleisch2
ProzentMuskelfleisch:
GAbzug = 0
ProzentMuskelfleisch2:

' Muskelfleisch-Zeile identifizieren
MFZeile = 2
ProzentMFAnfang:
If Sheets("GMaske2").Cells(MFZeile, 1) = Maskengruppe And Sheets("GMaske2").Cells(MFZeile, 2) = Maskennummer And Sheets("GMaske2").Cells(MFZeile, 3) = "M" And Sheets("GMaske2").Cells(MFZeile, 5) <= MF And Sheets("GMaske2").Cells(MFZeile, 6) >= MF Then GoTo ProzentMFEnde
MFZeile = MFZeile + 1
GoTo ProzentMFAnfang
ProzentMFEnde:

' Muskelfleischabzüge und -zuschläge
' später vielleicht: wird erst 0 gesetzt, falls MF gleich BasisMFAbZu = 0
' Muskelfleischzuschlag: wenn ich also in einem Intervall oberhalb der Basis liege
If Sheets("GMaske2").Cells(MFZeile, 6) > Sheets("GMaske1").Cells(MaZeile, 6) Then MFAbZu = Sheets("GMaske2").Cells(MFZeile, 14) + (MF - Sheets("GMaske2").Cells(MFZeile, 5)) * Sheets("GMaske2").Cells(MFZeile, 13)
' Muskelfleischabzug: wenn ich also in einem Intervall unterhalb der Basis liege
If Sheets("GMaske2").Cells(MFZeile, 5) < Sheets("GMaske1").Cells(MaZeile, 6) Then MFAbZu = Sheets("GMaske2").Cells(MFZeile, 14) + (Sheets("GMaske2").Cells(MFZeile, 6) - MF) * Sheets("GMaske2").Cells(MFZeile, 13)

' Prozentmaske verlassen
PGAbzug = 0
GoTo Maskenwert

FPMaske:
' Festpreismaske sofort verlassen
MFAbZu = 0
GAbzug = 0
PGAbzug = 0
GoTo Maskenwert


Maskenwert:
MW = MFAbZu + GAbzug + PGAbzug

End Function


Anzeige
Re: Function funkt bei 2000, aber nicht bei 97
08.04.2003 10:06:00
Forum

Hallo Dirk

diesen eigenartigen Programmstil solltest Du Dir schnellstens wieder abgewohnen. Mit Goto war unter Basic aktuell aber nicht mehr unter VBA. Mir ist es auch zu Aufwendig das jetzt umzuschreiben. Von den Befehlen sind es eigentlich nur normale Befehle. Ich habe jetzt nur den ersten Vergleich umgeschrieben

Gruß

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige