Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: If Funktion in VBA ( Excel 2016 )

If Funktion in VBA ( Excel 2016 )
24.03.2016 17:47:36
Ali
Hallo zusammen,
ich habe ein Problem mit meiner If-Funktion, die da wie folgt lautet:
Option Explicit Public Function gxc(wz As Double, aw As Double) As Double If wz = 1 And aw = 200 Then gxc = 45 + 60 / aw End If End If End Function
(In Worten: wenn wz gleich 1 und aw kleiner 200 dann soll gxc 0,75 betragen, wenn allerdings aw größer oder gleich 200 dann soll gxc nach der Formel 45+60/aw errechnet werden)
Wenn ich die Funktion verwenden möchte und wz und aw Zellen zuweise in der Form "=gxc(B11;O27)" kommt als Fehlermeldung "#NAME?". Leider ist mir nicht genau klar, was das zu bedeuten hat.

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If Funktion in VBA ( Excel 2016 )
24.03.2016 17:58:43
Crazy
Hi
so funktioniert es bei mir
Public Function gxc(wz As Double, aw As Double) As Double
If wz = 1 And aw = 200 Then gxc = 45 + 60 / aw
End Function
Tabelle1

 AB
1145,24
2250 

Formeln der Tabelle
ZelleFormel
B1=gxc(A1;A2)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
MfG Tom

Anzeige
AW: If Funktion in VBA ( Excel 2016 )
24.03.2016 18:52:33
Ali
Klasse, danke für die Hilfe.

AW: If Funktion in VBA ( Excel 2016 )
24.03.2016 17:59:29
ransi
HAllo,
Die 2 End If sind überflüssig.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Function gxc(wz As Double, aw As Double) As Double
    
    If wz = 1 And aw < 200 Then gxc = 0.75
    
    If aw >= 200 Then gxc = 45 + 60 / aw
    
    
End Function


Ausserdem muss der Code in ein Modul.
ransi

Anzeige
AW: If Funktion in VBA ( Excel 2016 )
24.03.2016 18:53:25
Ali
Super, hab eure Vorschläge verwenden können. Danke Danke Danke...

AW: If Funktion in VBA ( Excel 2016 )
24.03.2016 18:03:50
Daniel
Hi
hast du den Code richtig eingefügt, dh in ein allgemines Modul der gleichen Datei (Modul1)?
ansonsten sind deine IF-Bedinugungen falsch geschrieben.
wenn du nach dem THEN in der gleichen Zeile weiter schreibst, musst du den gesamten IF-Block in dieser einen Zeilen abhandeln und es gibt dann kein END IF.
also entweder:

Public Function gxc(wz As Double, aw As Double) As Double
If wz = 1 And aw = 200 Then gxc = 45 + 60 / aw
End Function

oder
Public Function gxc(wz As Double, aw As Double) As Double
If wz = 1 And aw 
wobei bei deinem Code nicht klar ist was passieren soll, wenn wz nicht gleich 1 und aw kleiner 200 ist.
Gruß Daniel

Anzeige
AW: If Funktion in VBA ( Excel 2016 )
24.03.2016 18:21:31
Ali
Besten Dank für die schnellen Antworten.
Also ich wollte anschließend weitere If-Funktionen einbauen, die wie folgt aussehen sollen:
Public Function gxc(wz As Double, aw As Double) As Double
If (wz = 1 or 2) And aw = 200 Then gxc = 45 + 60 / aw
If wz = 3 And aw = 200 Then gxc = 40 + 54 / aw
If wz = 4 And aw = 200 Then gxc = 36 + 48 / aw
End Function
Das bedeutet, dass wz 1oder2, 3 oder 4 sein kann und in jedem dieser Fälle kann aw entweder kleiner oder größergleich 200 sein und dann entsprechend errechnet werden.

Anzeige
select case ?
24.03.2016 18:33:39
ransi
Hallo,
Bei den ganze if end if kann man isch schon mal verhaspeln..
Schau dir mal dies an:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Function gxc(wz As Double, aw As Double) As Double
    Select Case wz
        Case 1 To 2
            If aw < 200 Then
                gxc = 0.75
                Else:
                gxc = 45 + 60 / aw
            End If
        Case 3
            If aw < 200 Then
                gxc = 0.67
                Else:
                gxc = 40 + 54 / aw
            End If
        Case 4
            If aw < 200 Then
                gxc = 0.6
                Else:
                gxc = 36 + 48 / aw
            End If
    End Select
End Function


ransi

Anzeige
AW: select case ?
24.03.2016 19:56:22
Ali
Ahh, jetzt hab ich es verstanden. Ich habe vorher noch nie mit der Select-Funktion gearbeitet... Super, nun wurde auch das Geheimnis für gelüftet.
Vielen Dank für eure Mühe.

AW: If Funktion in VBA ( Excel 2016 )
24.03.2016 18:38:41
Daniel
Hi
dann musst du das schon logisch sauber strukurieren:
Select Case wz
Case 1, 2
If aw 
oder wenn du es mit den Strukturen nicht so hast:
If (wz = 1 or wz = 2) And aw = 200 Then gxc = 45 + 60 / aw
If wz = 3 And aw = 200 then gxc = 40 + 54 / aw
if wz = 4 And aw = 200 Then gxc = 36 + 48 / aw

für deinen speziellen fall gäbe es noch folgende alternativlösung:
a = array(0, 45, 45, 40, 36)
b = array(0, 60, 60, 54, 48)
c = array(0, 0.75, 0.75, 0.67, 0.60)
if aw 
Gruß Daniel

Anzeige
AW: If Funktion in VBA ( Excel 2016 )
24.03.2016 18:51:48
Ali
Super, ich habe mich für Variante 2 entschieden. Tausend Dank!
Für die Zukunft habe ich noch eine Frage bezüglich der Varianten 1 & 3: Wie gebe ich in der entsprechenden Excelzelle an, dass er diese VBA-Funktionen anwenden soll? Ich meine, die Methode "=gxc(B11;O27)" kann ich ja dann nicht verwenden, weil Variante 1 & 3 keine Funktion in dem Sinne ist, oder?

Anzeige
AW: If Funktion in VBA ( Excel 2016 )
25.03.2016 00:11:33
Daniel
Hi
Ich habe für alle drei Varianten nur den Teil mit den IF-Bedingungen gezeigt.
Du kannst jede der drei Varianten so erweitern, dass du sie als benutzerdefinierte Funktion einsetzen kannst.
Gruß Daniel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige