Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1388to1392
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

DRINGEND!!! Fehlermeldung #WERT! bei VBA_Funktion

DRINGEND!!! Fehlermeldung #WERT! bei VBA_Funktion
31.10.2014 19:52:07
Florian
Hallo,
ich habe mir heute eine "kleine" Funktion in VBA geschrieben.
Sie sollte in Abhängigkeit von einem Anfangsdatum T1 und einem Enddatum T2 automatisch aus einer Tabelle (in einem anderen Tabellenblatt) zwei Werte auslesen. Die Zeilen dieser Tabelle sind nach "Anfangsdaten" untergliedert (,die T1 entsprechen sollen), wohingegen die Spalten dieser Tabelle in kategoriesierte Zeiträume untergliedert sind. In der Tabelle selbst stehen dann die benötigten Werte. Die beiden ermittelten Werte sollten abschließend - falls nötig - interpoliert werden.
Leider spuckt Excel bei Anwendung des Codes die Fehlermeldung #WERT! aus...Bräuchte bitte dringend Hilfe!
Hier der Code, vllt findet jemand meine/n Fehler:
Function MATCHING(ByVal T1 As Double, _
ByVal T2 As Double) As Double
' Dimensionierung der Hilfsvariablen
Dim x As Integer, _
y As Integer, _
i As Integer, _
j As Integer, _
T_l As Double, _
T_k As Double, _
r_l As Double, _
r_k As Double, _
Zeile As Double, _
lambda As Double, _
RLZ As Double, _
RLZ_year As Double
' Restlaufzeit in Tagen
RLZ = T2 - T1
' Restlaufzeit in Jahre
RLZ_year = Application.WooksheetFunction.YearFrac(T1, T2, 1)
' Falls Restlaufzeit 

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

Betreff
Datum
Anwender
Anzeige
AW: DRINGEND!!! Fehlermeldung #WERT! bei VBA_Funktion
31.10.2014 20:55:33
Luschi
Hallo Florian,
hier sind ein 2 kleine Fehler drin:
RLZ_year = Application.WooksheetFunction.YearFrac(T1, T2, 1) 'falsch
RLZ_year = Application.WorksheetFunction.YearFrac(T1, T2, 1) 'richtig
Dann benöigt die YearFrac-Funktion Datumswerte statt Double - also:
Function MATCHING(ByVal T1 As Date, ByVal T2 As Date) As Double
aus der vba-Online-Hilfe:
YEARFRAC(start_date, end_date, [basis])
The YEARFRAC function syntax has the following arguments:
Start_date Required. A date that represents the start date.
End_date Required. A date that represents the end date.
Basis Optional. The type of day count basis to use.
Dann mußt Du natürlich auch der MATCHING-Funktion Datumswerte übergeben.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: DRINGEND!!! Fehlermeldung #WERT! bei VBA_Funktion
01.11.2014 13:37:15
Florian
Danke für den Hinweis!
Ich habe das nun gemacht, und zudem einen weiteren Fehler, nämlich die Korrektur von T_l und T_k angepasst. Es handelt sich hierbei nämlich auch um zwei Datumsangaben: Bei T_l bzw. T_k werden jeweils eine bestimmte Anzahl an Wochen bzw. Monate auf T1 addiert.
Leider klappt es immer noch nicht mit dem Code :-(
Als weiteren Hinweis: bei Sheets("Tabelle2").Range("A2:P373") handelt es sich auch um Datumsangaben, die mit dem Datumswert von T1 abgeglichen werden sollen.
Hier der "neue" Code:
Function MATCHING(ByVal T1 As Date, _
ByVal T2 As Date) As Double
' Dimensionierung der Hilfsvariablen
Dim x As Integer, _
y As Integer, _
i As Integer, _
j As Integer, _
T_l As Date, _
T_k As Date, _
r_l As Double, _
r_k As Double, _
Zeile As Double, _
lambda As Double, _
RLZ As Double, _
RLZ_year As Double
' Restlaufzeit in Tagen
RLZ = T2 - T1
' Restlaufzeit in Jahre
RLZ_year = Application.WorksheetFunction.YearFrac(T1, T2, 1)
' Falls Restlaufzeit 

Anzeige
AW: DRINGEND!!! Fehlermeldung #WERT! bei VBA_Funktion
01.11.2014 16:15:00
Florian
... Habe nun am Ende des Codes noch einige kleine Veränderungen vorgenommen. Ich hoffe, es kann mir jemand kurz helfen:
Function MATCHING(ByVal T1 As Date, _
ByVal T2 As Date) As Double
' Dimensionierung der Hilfsvariablen
Dim x As Integer, _
y As Integer, _
i As Integer, _
j As Integer, _
T_l As Date, _
T_k As Date, _
r_l As Double, _
r_k As Double, _
Zeile As Double, _
lambda As Double, _
RLZ As Double, _
RLZ_year As Double
' Restlaufzeit in Tagen
RLZ = DateDiff("d", T1, T2)
' Restlaufzeit in Jahre
RLZ_year = Application.WorksheetFunction.YearFrac(T1, T2, 1)
' Falls Restlaufzeit 

Anzeige
AW: DRINGEND!!! Fehlermeldung #WERT! bei VBA_Funktion
02.11.2014 09:57:40
Luschi
Hallo Florian,
hier noch eine kleine Änderung:
statt:
Zeile = Application.WorksheetFunction.Match(T1, Sheets("Tabelle2").Range("A2:A373"), 0)
so:
Zeile = Application.WorksheetFunction.Match(CLng(T1), Sheets("Tabelle2").Range("A2:A373"), 0)
Gruß von Luschi
aus klein-Paris

AW: DRINGEND!!! Fehlermeldung #WERT! bei VBA_Funktion
03.11.2014 09:31:28
Florian
Vielen Dank für den Hinweis!
Es lag tatsächlich an der Anweisung "Zeile".
Ich habe es schließlich so gelöst, dass ich T1 als String-Variable T_1 definiert habe; so klappte es dann!
Vielen herzlichen Dank!

AW: DRINGEND!!! Fehlermeldung #WERT! bei VBA_Funktion
03.11.2014 10:12:25
Luschi
Hallo Florian,
das hier "Ich habe es schließlich so gelöst, dass ich T1 als String-Variable T_1 definiert habe; so klappte es dann!" - verstehe ich nicht. Du solltest doch in der Match-Funktion nur T1 gegen Clng(T1) ändern, also
Zeile = Application.WorksheetFunction.Match(Clng(T1), Sheets("Tabelle2").Range("A2:A373"), 0)
Zeige doch mal als Code, was Du gemacht hast!
Gruß von Luschi
aus klein-Paris

Anzeige
AW: DRINGEND!!! Fehlermeldung #WERT! bei VBA_Funktion
05.11.2014 09:22:31
Florian
Hi,
ich habe quasi das Problem schon gelöst, ehe ich Deine Antwort gelesen habe!
So, wie ich es jetzt gemacht habe, funktioniert es jedenfalls:
Dim T_1 As String
T_1 = T1
Arr = Worksheets("EURIBOR").Range("A1:A373")
Zeile = Application.WorksheetFunction.Match(T_1, Arr, 0)
Mat = Worksheets("EURIBOR").Range("A1:P373")
r_l = Application.WorksheetFunction.Index(Mat, Zeile, X)
r_k = Application.WorksheetFunction.Index(Mat, Zeile, y)

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige