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

Function in VBA nutzen

Function in VBA nutzen
27.06.2003 08:02:15
MikeS
Hallo,

wie kann ich eine Function in VBA ansprechen?

In einer Zelle geht das ja bekanntlich so:

In Zelle B1 steht die Function =Feiertag(A1)

Wenn in Zelle A1 das Datum 01.01.2003 steht, erscheint mit Hilfe der Function Neujahr in Zelle B1.

Vielen Dank

MikeS

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

Betreff
Datum
Anwender
Anzeige
Re: Function in VBA nutzen
27.06.2003 08:10:38
L.Vira

Option Explicit
Function Neujahr(Jahr As Long) As Date
Neujahr = DateSerial(Jahr, 1, 1)
End Function

Sub Test()
MsgBox Neujahr(2003)
End Sub

Re: Function in VBA nutzen
27.06.2003 08:14:08
Megatron (Jens)

Hallo MikeS,
da VBA die englischen Begriffe verwendet musst Du das eigentlich nur übersetzen. Da dies aber oft sehr aufwändig ist empfehle ich Dir das ganze mit dem Makrorekorder aufzunehmen und dann entsprechend anzupassen.
Aufnahme über : Extras>Makro>Aufzeichnen
Danach Aufzeichnung beenden und in VBA-Ebene ("F11") Code anpassen.

Viel Spass beim Basteln.

Gruß
Jens


Re: Function in VBA nutzen
27.06.2003 08:23:29
MikeS

Guten Morgen L.Vira,

langsam habe ich ein ganz schlechtes Gewissen, daß Du immer
der Erste bist, der mir Hilfestellung gibt.

Ein ganz dickes Lob mal an dieser Stelle.

Die Function Feiertag habe ich in der Recherche gefunden,
das ist also nicht das Problem.

Per VBA Frage ich über eine Schleife alle Datumwerte im Bereich
A7:A46 ab und wenn ein Feiertag dabei ist, wird der jeweilige
Feiertag in die gleiche Zeile in Spalte F eingefügt.

Das klappt auch perfekt.

Der Rückgabewert meiner Function ist ein Datum.

Diese Funktion möchte ich aber zusätzlich für eine UF nutzen,
in der ein Datum eines MonthView-Steuerlelements geprüft werden
soll.

Nun will ich das ausgewählte Datum des Steuerelements mit der
Function (steht in einem Modul) prüfen.

Wie rufe ich aber die vorh.Function auf???

Vielen Dank

Grüße aus Köln
MikeS

Anzeige
Re: Function in VBA nutzen
27.06.2003 08:35:18
L.Vira

Wäre schön zu wissen, wie der Code der Function aussieht, welche Parameter die Function erwartet.
Allgemein, Annahme die Function heißt Feiertag und erwartet ein Datum:

Option Explicit
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
Me.Caption = Feiertag(MonthView1)
End Sub

Re: Function in VBA nutzen
27.06.2003 08:38:34
MikeS

Hier die Function...



Function Feiertag(Datum As Date) As String
    Dim j%, D%
    Dim As Date
    j = Year(Datum)
    'Osterberechnung
    D = (((255 - 11 * (j Mod 19)) - 21) Mod 30) + 21
    O = DateSerial(j, 3, 1) + D + (D > 48) + 6 - _
    ((j + j \ 4 + D + (D > 48) + 1) Mod 7)
    'Hier ist die osterberechnung eigentlich zu Ende :-))
    'O = Das Osterdatum
    'Feiertage berechnen
    Select Case Datum
        Case Is = DateSerial(j, 1, 1)
            Feiertag = "Neujahr"
        Case Is = DateSerial(j, 1, 6)
            Feiertag = "Dreikönig*"
        Case Is = DateAdd("D", -2, O)
            Feiertag = "Karfreitag"
        Case Is = O
            Feiertag = "Ostersonntag"
        Case Is = DateAdd("D", 1, O)
            Feiertag = "Ostermontag"
        Case Is = DateSerial(j, 5, 1)
            Feiertag = "Erster Mai"
        Case Is = DateAdd("D", 39, O)
            Feiertag = "Christi Himmelfahrt"
        Case Is = DateAdd("D", 49, O)
            Feiertag = "Pfingstsonntag"
        Case Is = DateAdd("D", 50, O)
            Feiertag = "Pfingstmontag"
        Case Is = DateAdd("D", 60, O)
            Feiertag = "Fronleichnam*"
        Case Is = DateSerial(j, 8, 15)
            Feiertag = "Maria Himmelfahrt*"
        Case Is = DateSerial(j, 10, 3)
            Feiertag = "Deutsche Einheit"
        Case Is = DateSerial(j, 11, 22) - (DateSerial(j, 11, 18) Mod 7)
            Feiertag = "Buß- und Bettag*"
        Case Is = DateSerial(j, 10, 31)
            Feiertag = "Reformationstag*"
        Case Is = DateSerial(j, 11, 1)
            Feiertag = "Allerheiligen*"
        Case Is = DateSerial(j, 12, 24)
            Feiertag = "Heilig Abend*"
        Case Is = DateSerial(j, 12, 25)
            Feiertag = "EWeihnacht"
        Case Is = DateSerial(j, 12, 26)
            Feiertag = "ZWeihnacht"
        Case Is = DateSerial(j, 12, 31)
            Feiertag = "Silvester*"
        Case Else
            Feiertag = ""
    End Select
End Function 


     Code eingefügt mit Syntaxhighlighter 2.1


Anzeige
Re: Function in VBA nutzen
27.06.2003 08:44:53
L.Vira

Dann sollte der Aufruf so klappen:

Option Explicit
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
Me.Caption = Feiertag(MonthView1)
End Sub

Musst dir nur überlegen, wohin der Feiertag geschrieben werden soll und wodurch der Wert der Function abgerufen werden soll.

Re: Function in VBA nutzen
27.06.2003 08:49:25
MikeS

Alles klar, werde es nachher ausprobieren.

Vielen Dank und Happy Weekend

Ciao Mike

154 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige