Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
192to196
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
192to196
192to196
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Funktionen

Funktionen
15.12.2002 21:44:40
Wolfgang
hallo
Ich habe in einem programm mehrere funktionen geschrieben.
die funktionen laufen auch astrein.
nur wenn ich die datei öffne hab ich in den zellen einen fehler
namens #Name.
Nachdem ich mehrmals die F9 Taste drücke ist alles wieder ok.
Was könnte ich falsch gemacht haben in den prozeduren?
wolfgang

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

Betreff
Datum
Anwender
Anzeige
Re: Funktionen
15.12.2002 21:48:57
Hajo
Hallo Wolfgang

eine Glaskugel oder heilige Schein haben die wenigsten. Für alle anderen wäre der Code schon gut.

Gruß Hajo

Re: Funktionen
15.12.2002 22:11:46
wolfgang
hi hajo
hast ja recht
aber ich dachte es gibt ne allgeneine lösung, weil der code ist doch ziemlich lang.
aber ok hier ist er vieleicht findest du ja meine krücke?

Function AbfangKonsole(Wandart, anz, dicke, länge, höhe, AchsAbst, Raster)
Dim Überbau, überlänge, end_achse As Variant
Dim Anz_konsole, Anz_achsen As Double


If Wandart = "Wand" Then
'***************************************************************
If dicke = 125 Then
If höhe < 12 Then
Anz_konsole = 0
end_achse = 0
ElseIf höhe >= 12 Then
Select Case AchsAbst
Case Is <= 4
Überbau = höhe - 12
Anz_konsole = Überbau / 5.13
end_achse = 1
Case Is <= 5
Überbau = höhe - 12
Anz_konsole = Überbau / 4.11
end_achse = 1
End Select
End If
End If
'***************************************************************
If dicke = 150 Then
If höhe < 12 Then
Anz_konsole = 0
end_achse = 0
ElseIf höhe >= 12 Then
Select Case AchsAbst
Case Is <= 4
Überbau = höhe - 12
Anz_konsole = Überbau / 5.46
end_achse = 1
Case Is <= 5
Überbau = höhe - 12
Anz_konsole = Überbau / 4.37
end_achse = 1
Case Is <= 5.5
Überbau = höhe - 12
Anz_konsole = Überbau / 3.97
end_achse = 1
Case Is <= 6
Überbau = höhe - 12
Anz_konsole = Überbau / 4.64
end_achse = 1
End Select
End If
End If
'***************************************************************
If dicke = 175 Then
If höhe < 14 Then
Anz_konsole = 0
end_achse = 0
ElseIf höhe >= 14 Then
Select Case AchsAbst
Case Is <= 4
Überbau = höhe - 14
Anz_konsole = Überbau / 6.19
end_achse = 1
Case Is <= 5
Überbau = höhe - 14
Anz_konsole = Überbau / 4.95
end_achse = 1
Case Is <= 5.5
Überbau = höhe - 14
Anz_konsole = Überbau / 4.5
end_achse = 1
Case Is <= 6
Überbau = höhe - 14
Anz_konsole = Überbau / 4.13
end_achse = 1
Case Is <= 6.5
Überbau = höhe - 14
Anz_konsole = Überbau / 3.81
end_achse = 1
Case Is <= 7
Überbau = höhe - 14
Anz_konsole = Überbau / 3.54
end_achse = 1
End Select
End If
End If
'***************************************************************
If dicke = 200 Then
If höhe < 16 Then
Anz_konsole = 0
end_achse = 0
ElseIf höhe >= 16 Then
Select Case AchsAbst
Case Is <= 4
Überbau = höhe - 16
Anz_konsole = Überbau / 5.42
end_achse = 1
Case Is <= 5
Überbau = höhe - 16
Anz_konsole = Überbau / 4.34
end_achse = 1
Case Is <= 5.5
Überbau = höhe - 16
Anz_konsole = Überbau / 3.94
end_achse = 1
Case Is <= 6
Überbau = höhe - 16
Anz_konsole = Überbau / 3.61
end_achse = 1
Case Is <= 6.5
Überbau = höhe - 16
Anz_konsole = Überbau / 3.33
end_achse = 1
Case Is <= 7
Überbau = höhe - 16
Anz_konsole = Überbau / 3.1
end_achse = 1
Case Is <= 7.5
Überbau = höhe - 16
Anz_konsole = Überbau / 2.89
end_achse = 1
End Select
End If
End If
'***************************************************************
End If

Anz_achsen = länge / AchsAbst
Anz_achsen = WorksheetFunction.RoundUp(Anz_achsen, 0)

AbfangKonsole = (WorksheetFunction.RoundUp(Anz_konsole, 0) * (Anz_achsen + end_achse))

End Function

Anzeige
Re: Funktionen
15.12.2002 22:37:30
Nike
Hi,
ganz ohne Glaskugel ;-)
Würd ich noch ein
Application.volatile
einbauen,
die Funktion in ein Modul packen und nicht im Codebereich
einer Tabelle ablegen und u.U. public machen,
aber das könnte Geschmackssach sein ;-)

Die verschiedenen Dicken ließen sich auch mit ner
Select Case Struktur abfackeln(man könnte so ganz
geschickt alle weiteren Möglichkeiten mit nem
Case else abhaken), aber das kommt auch auf den
Geschmack an, solange alles funkt is es ja cool ;-)

Bye

Nike

Re: Funktionen
15.12.2002 22:48:21
Hajo_zi
Hallo Wolfgang

ich würde den code wie folgt einkürzen.


Option Explicit

Function AbfangKonsole(Wandart, anz, dicke, länge, höhe, AchsAbst, Raster)
Dim Überbau, überlänge, end_achse As Variant
Dim Anz_konsole, Anz_achsen As Double
Application.Volatile
If Wandart = "Wand" Then
Select Case dicke
'***************************************************************
Case 125
If höhe < 12 Then
Anz_konsole = 0
end_achse = 0
ElseIf höhe >= 12 Then
Select Case AchsAbst
Case Is <= 4
Anz_konsole = Überbau / 5.13
Case Is <= 5
Anz_konsole = Überbau / 4.11
End Select
Überbau = höhe - 12
end_achse = 1
End If
'***************************************************************
Case 150
If höhe < 12 Then
Anz_konsole = 0
end_achse = 0
ElseIf höhe >= 12 Then
Select Case AchsAbst
Case Is <= 4
Anz_konsole = Überbau / 5.46
Case Is <= 5
Anz_konsole = Überbau / 4.37
Case Is <= 5.5
Anz_konsole = Überbau / 3.97
Case Is <= 6
Anz_konsole = Überbau / 4.64
End Select
Überbau = höhe - 12
end_achse = 1
End If
'***************************************************************
Case 175
If höhe < 14 Then
Anz_konsole = 0
end_achse = 0
ElseIf höhe >= 14 Then
Select Case AchsAbst
Case Is <= 4
Anz_konsole = Überbau / 6.19
Case Is <= 5
Anz_konsole = Überbau / 4.95
Case Is <= 5.5
Anz_konsole = Überbau / 4.5
Case Is <= 6
Anz_konsole = Überbau / 4.13
Case Is <= 6.5
Anz_konsole = Überbau / 3.81
Case Is <= 7
Anz_konsole = Überbau / 3.54
End Select
Überbau = höhe - 14
end_achse = 1
End If
'***************************************************************
Case Is = 200
If höhe < 16 Then
Anz_konsole = 0
end_achse = 0
ElseIf höhe >= 16 Then
Select Case AchsAbst
Case Is <= 4
Anz_konsole = Überbau / 5.42
Case Is <= 5
Anz_konsole = Überbau / 4.34
Case Is <= 5.5
Anz_konsole = Überbau / 3.94
Case Is <= 6
Anz_konsole = Überbau / 3.61
Case Is <= 6.5
Anz_konsole = Überbau / 3.33
Case Is <= 7
Anz_konsole = Überbau / 3.1
Case Is <= 7.5
Anz_konsole = Überbau / 2.89
End Select
Überbau = höhe - 16
end_achse = 1
End If
End Select
'***************************************************************
End If
Anz_achsen = länge / AchsAbst
Anz_achsen = WorksheetFunction.RoundUp(Anz_achsen, 0)
AbfangKonsole = (WorksheetFunction.RoundUp(Anz_konsole, 0) * (Anz_achsen + end_achse))
End Function

Code eingefügt mit: Excel Code Jeanie

Code Jeanie
Frage
Das Umsetzen nach Html klappt perfekt, auch die Ansicht in den Foren ist gegeben. Bei manchen Foren kann man aber anscheinend nicht den dargestellten Code nach VBA rückkopieren. Warum?
Antwort
Dies liegt nicht an der Code Jeanie !!! Manche Foren interpretieren anscheinend < pre > < /pre > Tags nicht richtig und erzeugen am Zeilenende einen weichen Zeilenumbruch anstatt eines harten Zeilenumbruches. Dies führt dazu, dass im VBA-Editor die Zeilen hintereinander geschrieben werden. Zum Rückkopieren in solchen Fällen: Fügen Sie den kopierten Code aus dem Forum nach Word ein, kopieren Sie ihn dort wieder und fügen Sie ihn dann im VBA - Editor ein

Gruß Hajo

Anzeige
Re: Funktionen
15.12.2002 22:49:19
wolfgang
hi nike
Die Funktion ist in einem modul
-- Application.volatile -- ok ich kenn das noch nicht werds mal probieren
danke auch für deinen hinweis mit select case
aber ok ... ich versuchs mal.
danke wolfgang
Re: Funktionen
15.12.2002 22:55:06
wolfgang
hi hajo
danke für die korrektur
ich baus mal so ein
wenn ich heute nicht mehr antworte bin ich halt eingeschlafen
aber ich melde nich dazu versprochen
bin zwar die nächsten zwei wochen nicht online aber öffters in diesem forum
also erst mal danke
wolfgang


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige