Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
492to496
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
492to496
492to496
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Typänderung einer Variablen

Typänderung einer Variablen
30.09.2004 13:18:36
Kladeb
Hallo Forum,
ich habe gerade den nachfolgenden Code in der Entwicklung.
Wenn ich das Makro starte und die Variable lnDou mit der Function
Zulage füllen möchte, ändert sich der Typ der Variablen lvBeginn
von Objekt in Date? Und zwar nachdem die Funktion Zulage in der
Zeile "ldXVon = TimeSerial(lvIndex.Offset(0, 1) * 24, 0, 0)"
gewesen ist.
Wie kommt das denn wohl ?
Gruss aus Hannover
Kladeb
Option Explicit

Sub ZulagenBerechnen()
Dim loBereich As Range
Dim lvBeginn As Variant
Dim lnDou As Double
Set loBereich = ThisWorkbook.Sheets("Ist-Zeiten").Range("D5:D300")
For Each lvBeginn In loBereich
If Not lvBeginn + lvBeginn.Offset(0, 1) = 0 Then
lnDou = Zulage(lvBeginn, lvBeginn.Offset(0, 1))
lvBeginn.Offset(0, 2) = lnDou
End If
Next
End Sub


Function Zulage(ldVon, ldBis)
Dim loBlattVergütung As Range
Dim lvIndex As Variant
Dim ln0 As Integer, ln25 As Integer, ln40 As Integer
Dim lnStunden As Double
Dim ldX As Date, ldXVon As Date, ldXBis As Date
Dim lbStart As Boolean
Set loBlattVergütung = ThisWorkbook.Sheets("Vergütungstabelle").Range("A2:A49")
ldVon = TimeSerial(Hour(ldVon), Minute(ldVon), Second(ldVon))
ldBis = TimeSerial(Hour(ldBis), Minute(ldBis), Second(ldBis))
ldX = ldVon
For Each lvIndex In loBlattVergütung
ldXVon = TimeSerial(lvIndex.Offset(0, 1) * 24, 0, 0)
ldXBis = TimeSerial(lvIndex.Offset(0, 2) * 24, 0, 0)
If ldVon >= ldXVon And ldVon <= ldXBis Then
If lbStart = True Then
Exit For
Else
lbStart = True
End If
End If
If ldX >= ldXVon And ldX <= ldXBis Then
If ldXBis < ldBis Then
lnStunden = lnStunden + ((ldXBis - ldX) * 24)
Else
lnStunden = lnStunden + ((ldBis - ldX) * 24)
End If
ldX = IIf(ldXBis < ldBis, ldXBis, ldBis)
End If
Next
Zulage = lnStunden
End Function

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Typänderung einer Variablen
Dan
Hallo, das Prototyp der Funktion Zulage sieht so aus :
Function Zulage(ldVon, ldBis)
das heisst :
Function Zulage(ByRef ldVon As VAriant, ByRef ldBis As VAriant) As Variant
ByRef is the default in Visual Basic.
ByRef = by reference :
A way of passing the address of an argument to a procedure instead of passing the value. This allows the procedure to access the actual variable. As a result, the variable's actual value can be changed by the procedure to which it is passed. Unless otherwise specified, arguments are passed by reference.
Versuch die Funktion z.B. so zu schreiben :
Function Zulage(ByVal ldVon As Intger?, ByVal ldBis As Integer?) As Double?
Gruus Dan, CZ.
Anzeige
AW: Typänderung einer Variablen
30.09.2004 14:25:12
klade
Hi :)
Danke schon mal für die Antwort, ich habe es jetzt mit
lvBeginn.Value
gemacht. Das klappt auch...
Gruss
Kladeb

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige