Anzeige
Archiv - Navigation
1112to1116
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
Funktion über VBA aufrufen
Peter
Hallo Forum,
ich habe bei der Recherche diese Funktion gefunden.
Wie wird diese über VBA angesprochen damit die Datumswerte
In Tabelle1 stehen?
Über ein kleines Bsp mit Erklärung würde ich mich sehr freuen.
Danke im voraus
Peter
'von: Rudi Maintaire
Function Woche_von_bis(intKW As Byte, intJahr As Integer) 'Gibt das Anfangs- und Enddatum einer Woche im Format TT.MM.JJJJ-TT.MM.JJJJ aus. Dim MonInKW As Date MonInKW = _ DateSerial(intJahr, 1, 7 * intKW - 3 - Weekday(DateSerial(intJahr, 0, 0), 3)) Woche_von_bis = _ Format(MonInKW, "DD.MM.") & " - " & Format(MonInKW + 6, "DD.MM.YYYY") End Function

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

Betreff
Benutzer
Anzeige
AW: Funktion über VBA aufrufen
01.11.2009 10:50:41
ransi
HAllo
Der code muss in ein Modul.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Function Woche_von_bis(intKW As Byte, intJahr As Integer)
'Gibt das Anfangs- und Enddatum einer Woche im Format TT.MM.JJJJ-TT.MM.JJJJ aus.
Dim MonInKW As Date
MonInKW = _
    DateSerial(intJahr, 1, 7 * intKW - 3 - Weekday(DateSerial(intJahr, 0, 0), 3))
Woche_von_bis = _
    Format(MonInKW, "DD.MM.") & " - " & Format(MonInKW + 6, "DD.MM.YYYY")
End Function


Jetzt kennt dein Excel eine neue Tabellnfunktion.
Die kannst du aufrufen wie jede andere Funktion auch.
Sie erwartet eine Zahl als Kalenderwoche und ein Jahr.
Hier mal ein Beispiel wie der Aufruf gemacht wird:
Tabelle1

 ABC
1KalenderwocheJahr 
23200912.01. - 18.01.2009

Formeln der Tabelle
ZelleFormel
C2=Woche_von_bis(A2;2009)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
ransi
Anzeige
AW: Funktion über VBA aufrufen
01.11.2009 10:52:00
ransi
Tabelle1

 ABC
1KalenderwocheJahr 
23200912.01. - 18.01.2009

Formeln der Tabelle
ZelleFormel
C2=Woche_von_bis(A2;B2)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
ransi
Anzeige
AW: noch ne Frage:Funktion über VBA aufrufen
01.11.2009 11:11:38
Peter
Danke für die schnelle Antwort.
Ich möchte folgendes über VBA machen:
Nach dem die Kalenderwoche in Spalte A eingegeben wurde soll
für das aktuelle Jahr
der Zeitraum berechnet werden und in Spalte C ausgegeben werden.
Ist es möglich diese Vorstellung in einen VBA Code zu verwirlichen?
Peter
Spalte C berechnen aus A
01.11.2009 11:22:35
Erich
Hi Peter,
du müsstest das noch etwas genauer angeben.
Wenn es nur um einen Eintrag in einer Zeile geht, ginge das so (hier in Zeile 1):

Sub Test12()
'  in A1 stzeht die KW. Das Makro schreibt das Ergebnis in C1.
Cells(1, 3) = Woche_von_bis(Cells(1, 1), Year(Date))
End Sub
Oder ist es so, dass du in mehrere Zellen in Spalte A KWs eingibst
und dann für alle der Bereich ermittelt werden soll?
Noch eine Frage: Das Ergebnis der Fkt. in Spalte C ist Text, mit dem sich schlecht weiter rechnen lässt.
Vielleicht wäre es geschickter, Von- und Bis-Datum in getrennte Zellen (Spalten C und D) zu schreiben?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Funktion über VBA aufrufen
01.11.2009 10:54:57
Oberschlumpf
Hi Peter
Deine Frage ist zu....ungenau.
a) welche Tabelle1 meinst du denn? In der Datei, in der auch das Makro gestartet wird, oder in einer weiteren Datei, die geöffnet ist?
b) wo in Tabelle1?
c) von wo kommen denn die Parameter (KW + Jahr), die die Funktion erwartet?
Schreib diesen Code ins allgemeine Modul
Function Woche_von_bis(intKW As Byte, intJahr As Integer)
'Gibt das Anfangs- und Enddatum einer Woche im Format TT.MM.JJJJ-TT.MM.JJJJ aus.
Dim MonInKW As Date
Sheets("tabelle1").Range("A1") = _
DateSerial(intJahr, 1, 7 * intKW - 3 - Weekday(DateSerial(intJahr, 0, 0), 3))
Sheets("tabelle1").Range("A2") = _
Format(MonInKW, "DD.MM.") & " - " & Format(MonInKW + 6, "DD.MM.YYYY")
End Function

Sub test()
kw = InputBox("bitte kw eingeben")
jahr = InputBox("bitte das jahr eingeben")
Woche_von_bis Val(kw), Val(jahr)
End Sub

und starte über Extras/Makro/Makros das Makro "test"
zu c)
im Makro Test werden 2 Inputboxen gestartet, die von dir die Eingabe für KW + Jahr "verlangen".
(das Makro prüft nicht auf richtige Eingabe, in beiden Inputboxen werden natürlich Zahlenwerte erwartet)
zu a) + b)
Die Funktion gibt das Ergebnis in der Datei, in der auch das Makro gestartet wird in die Zellen A1 + A2 zurück.
Hilfts?
Ciao
Thorsten
Anzeige
Kalenderwoche-Funktion über VBA aufrufen
01.11.2009 11:11:12
Erich
Hi Peter,
zunächst eine Bemerkung zur Funktion selbst:
Von- und Bis-Datum können in unterschiedlichen Jahre liegen.
Zumindest dann muss bei beiden Daten das Jahr mit angegeben werden, sonst ist das Ergebnis falsch.
Hier drei Testmakros mit Beispielen für den Aufruf der Fkt in VBA und die geänderte Fkt.:

Option Explicit
Sub Test1()
MsgBox Woche_von_bis(1, 2009)
MsgBox Woche_von_bis(40, 2009)
MsgBox Woche_von_bis(53, 2009)
End Sub
Sub Test2()
'  in A1 stzeht die KW, in B1 das Jahr. Das Makro schreibt das Ergebnis in C1.
Cells(1, 3) = Woche_von_bis(Cells(1, 1), Cells(1, 2))
End Sub
Sub Test3()
Dim bytW As Byte, intJ As Integer, strW As String
bytW = 40
intJ = 2009
strW = Woche_von_bis(bytW, intJ)
MsgBox "Ergebnis: " & strW
End Sub
Function Woche_von_bis(intKW As Byte, intJJ As Integer)
'Gibt das Anfangs- und Enddatum einer Woche im Format TT.MM. - TT.MM.JJJJ
'                                           oder  TT.MM.JJJJ - TT.MM.JJJJ aus.
Dim datMo As Date, strJJ As String
datMo = DateSerial(intJJ, 1, 7 * intKW - 3 - Weekday(DateSerial(intJJ, 0, 0), 3))
If Year(datMo)  Year(datMo + 6) Then strJJ = Format(datMo, "yyyy")
Woche_von_bis = Format(datMo, "dd.mm.") & strJJ & " - " & Format(datMo + 6, "dd.mm.yyyy")
End Function
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Ich bedanke mich bei Euch allen
01.11.2009 11:21:34
Peter
Vielen Dank
Eure Antworten und Beispiele haben mir sehr geholfen.
Jetzt kann ich weiterprobieren.
Peter

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige