Office: VBA Funktions Problem

Helfe beim Thema VBA Funktions Problem in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo ich habe folgendes Problem: Funktion (Modul2): Function KW(d As Date) As Integer t = DateSerial(Year(d + (8 - WeekDay(d)) Mod 7 - 3),... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von andysmith, 21. September 2009.

  1. andysmith Erfahrener User

    VBA Funktions Problem


    Hallo ich habe folgendes Problem:

    Funktion (Modul2):

    Code:
    Function KW(d As Date) As Integer
        t = DateSerial(Year(d + (8 - WeekDay(d)) Mod 7 - 3), 1, 1)
        KW = (d - t - 3 + (WeekDay(t) + 1) Mod 7) \ 7 + 1
    End Function
    Quelle:
    http://www.schmittis-page.de/index.html?/excel/vba/t22.htm

    Aufruf aus dem Hauptmakro (Modul1)

    Code:
    LUV.Sheets("Sheet1").Cells(3, 3) = KW(Paten.Worksheets("Lfde LUV-Aufträge").Range("CC" & I))
    Es handelt sich hierbei um den Versuch, ein Datum der Zelle CC & I aus der einen Datei in die Datei aus der das Makro gestartet wird, via der Funktion in eine KW umzuwandeln, zu vergleichen um dann die richtige Spalte (KW) zu finden in welche die Daten gehören, wobei Cells(3,3) zunächst nur die Hilfsspalte ist, in welche erst einmal das Ergebnis der Funktion geliefert werden soll, um zu sehen was denn da kommt (die Funktion habe ich aus dem Inet) Leider bekomme ich hier immer e...ch falsch bzw. wie kann man das anders lösen?
     
    andysmith, 21. September 2009
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi Andy,

    ich kenne nicht deine Variablendefinitionen, aber bei mir funktionert der folgende Code problemlos:

    Code:
    Sub KWErmitteln()
        Dim LUV As Workbook
        Dim Paten As Workbook
        Dim i As Long
        Set LUV = ThisWorkbook
        Set Paten = Workbooks("Mappe1.xls")
        i = 1
        LUV.Sheets("Sheet1").Cells(3, 3) = KW(Paten.Worksheets("Lfde LUV-Aufträge").Range("CC" & i))
        Set LUV = Nothing
        Set Paten = Nothing
    End Sub
    
    Function KW(d As Date) As Integer
        Dim t As Date
        t = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 1)
        KW = (d - t - 3 + (Weekday(t) + 1) Mod 7) \ 7 + 1
    End Function
    

    Bis später,
    Karin
     
  3. Hajo_Zi
    Hajo_Zi Erfahrener User
    was solll der Teil Paten.
     
  4. andysmith Erfahrener User

    VBA Funktions Problem

    ok..., zunächst handelt es sich hierbei nicht um "Pattern" sondern um Paten als der Pate von etwas

    Desweiteren habe ich das Problem gefunden in Form von nicht nichts sondern es wird versucht mehrere Leerzeichen als Datum zu verwenden was logischerweise nicht möglich ist.

    Hierzu nun die erweiterte Frage, wie kann man solch einen "Dumpfsinn" ausschliessen indem ich sozusagen anders herum Frage... wenn es ein Datum ist dann wandle in KW....??
     
    andysmith, 21. September 2009
    #4
  5. Exl121150 Erfahrener User
    Hallo AndySmith,

    ich habe nicht Deine Function auf rechnerische Richtigkeit überprüft, sondern nur die Syntax:
    Dabei ist mir aufgefallen, dass Du die Variable "t" verwendest innerhalb der Function, ohne sie deklariert zu haben.
    Falls Du im Modul2 auf Modulebene (also vor der 1. Function bzw. Sub) ebenfalls eine Variable "t" hast, die zB. as STRING deklariert ist, bedeutet das, dass genau diese dann auch innerhalb der Function KW(..) herangezogen wird, was dann angesichts der verwendeten Funktionen eine Typunverträglichkeit bewirkt.

    Ganz und gar wichtig beim Programmierung mit VBA (und generell) ist:
    1) Als 1. Anweisung in einem Modul stets "Option Explicit" eingeben
    2) Jede Variable stets explizit zu deklarieren (an der Stelle, an die sie hingehört).
     
    Exl121150, 21. September 2009
    #5
  6. andysmith Erfahrener User
    Vielen Dank!! das waren unabhängig des Leerzeichen Problems genau die richtigen Worte!!


     
    andysmith, 21. September 2009
    #6
  7. Beverly
    Beverly Erfahrener User
    Hi Andy,

    wie du in meinem Beitrag erkennen konntest, ist die Variable t in der Funktion selbst als Date definiert.

    Ich würde vorher eine Abfrage machen, ob der Zellinhalt ein Datum ist, so nach diesem Prinzip:

    Code:
    If IsDate(Paten.Worksheets("Lfde LUV-Aufträge").Range("CC" & i)) Then LUV.Sheets("Sheet1").Cells(3, 3) = ...
    Bis später,
    Karin
     
  8. Exl121150 Erfahrener User

    VBA Funktions Problem

    Hallo,

    man kann die KW-Funktion geringfügig verkürzen bzw. übersichtlicher machen:
    Code:
    Function KW(d As Date) As Integer
        Dim t As Date 
        t = DateSerial(Year(d - Weekday(d, 2) + 4), 1, 4)
        KW = (d - t + Weekday(t, 2) - 1) \ 7 + 1
    End Function
    Dabei bedeutet t das fortlaufende Datum des 4.1. entweder des Vorjahres, des lfd. Jahres oder des Folgejahres.
    Ferner gibt Weekday(d,2) folgende Werte zurück: 1=Montag, 2=Dienstag,..., 7=Sonntag
     
    Exl121150, 21. September 2009
    #8
  9. andysmith Erfahrener User
    Vielen Dank an alle, Problem gelösst, das Thema hat sich mit den guten Antworten erledigt!!

    THX
     
    andysmith, 24. September 2009
    #9
Thema:

VBA Funktions Problem

Die Seite wird geladen...
  1. VBA Funktions Problem - Similar Threads - VBA Funktions Problem

  2. Array-Funktion mit VBA in Zelle schreiben

    in Microsoft Excel Hilfe
    Array-Funktion mit VBA in Zelle schreiben: Hallo zusammen, ich bin begeisterter Nutzer der neuen Array-Funktionen in Excel 365. Ich möchte mit VBA so eine Funktion in eine Zelle schreiben. Bei "normalen" Formeln habe ich das immer so...
  3. Hilfe bei VBA-Programmierung

    in Microsoft Excel Hilfe
    Hilfe bei VBA-Programmierung: Hallöchen zusammen, ich bräuchte mal wieder eure Hilfe. Diesmal geht es um ein VBA-Programm bzw. -Funktion. Folgender Sachverhalt: Ich habe Rohdaten in einer Textdatei, die ich mir in Excel...
  4. Outlook VBA NewMail Funktion Problem

    in Microsoft Outlook Hilfe
    Outlook VBA NewMail Funktion Problem: Hallo zusammen, ich möchte aus eingehenden E-Mails Anlagen in einem vorgegebenen Order abspeichern. Ich habe mir dazu ein Makro aus dem Netzt gemopst - zugegebenermaßen- was genau das kann....
  5. Funktion soll Wert in Variable übergeben (VBA)

    in Microsoft Excel Hilfe
    Funktion soll Wert in Variable übergeben (VBA): Hallo Forum-Gurus, ich bräuchte kurz Eure Hilfe. Anscheinend bin ich auf den Kopf gefallen. Folgende Funktion habe ich programmiert und möchte das Ergebnis nun in einer andere Private Sub...
  6. E-Mail Funktion mail auslesen VBA Anfänger

    in Microsoft Excel Hilfe
    E-Mail Funktion mail auslesen VBA Anfänger: Hallo, ich habe über das Internet mir einen Code zusammengebastelt. Code: Sub EmailManuellAbsenden() Application.DisplayAlerts = False Dim objOutlook As Object Dim objMail As Object Dim olApp As...
  7. Funktion in Excel-VBA nutzen

    in Microsoft Excel Hilfe
    Funktion in Excel-VBA nutzen: Hallo, ich habe einige Zeit nichts mehr mit der VBA-Programmierung gemacht. Da scheint sich einiges geändert zu haben. Ich dachte mir, ein allgemeiner Funktionsaufruf funktioniert immer noch...
  8. Mehrere Zellen zusammen rechnen wenn

    in Microsoft Excel Hilfe
    Mehrere Zellen zusammen rechnen wenn: Moin, leider habe ich ein Problem mit Excel, ich habe versucht danach zusuchen aber leider hatte ich kein Erfolg. [ATTACH] Er soll gucken ob dort in B12 steht Abgang Europal. oder Zugang...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden