Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
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
Inhaltsverzeichnis

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.

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.

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?

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
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige