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

Hilfe bei Makroerweiterung

Hilfe bei Makroerweiterung
28.03.2009 11:43:07
mike49
Hallo zusammen,
ich habe in einem Modul ein Makro stehen, das unter anderem regelt, dass ein Arbeitsbeginn vor 9 Uhr bei der Berechnung nicht berücksichtigt wird. Jetzt hat sich der Arbeitsbeginn auf 9:15 Uhr verschoben. Meine Arbeitmappe hat 12 Blätter mit den Bezeichnungen "Jan,Feb,Mär,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez". Die Neuregelung soll aber erst ab April zum Tragen kommen. Wie müsste das Makro geändert werden?
Die Regelung beim Arbeitsbeginn um 13 Uhr bleibt unverändert.

Option Explicit
Function arbdau(va, ve, na, ne)
Dim vorm As Date
Dim nachm As Date
'Anfangszeit auf  0 And va > 0 Then vorm = ve - va
If ne > 0 And na > 0 Then nachm = ne - na
arbdau = vorm + nachm
End Function



Function nettobetr(stulo, netto)
If netto > 0 Then nettobetr = stulo * netto
End Function



Function arbdauger(va, ve, na, ne)
Dim vormGer As Double
Dim nachmGer As Double
If ve > 0 And va > 0 Then vormGer = Application.WorksheetFunction.Floor(ve * 24, ",25") _
- Application.WorksheetFunction.Ceiling(va * 24, ",25")
If ne > 0 And na > 0 Then nachmGer = Application.WorksheetFunction.Floor(ne * 24, ",25") _
- Application.WorksheetFunction.Ceiling(na * 24, ",25")
arbdauger = vormGer + nachmGer
End Function


Danke für die Hilfe.
Gruß
mike49

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe bei Makroerweiterung
28.03.2009 12:03:15
Daniel
Hi
verwende statt der Berechnung:

1 / 24 * 9


die Funktion:


TimeSerial(Stunden, Minuten, Sekunden)


dann kannst du bei Änderungen von Zeiten dein Makro bequem anpassen.


Function arbdau(va, ve, na, ne)
Dim vorm As Date
Dim nachm As Date
'Anfangszeit auf TimeSerial(9, 15, 0) Then va = TimeSerial(9, 15, 0)
'Ende Anfangszeit
'Anfangszeit auf TimeSerial(13, 0, 0) Then na = TimeSerial(13, 0, 0)
'Ende Anfangszeit
If ve > 0 And va > 0 Then vorm = ve - va
If ne > 0 And na > 0 Then nachm = ne - na
arbdau = vorm + nachm
End Function


Gruß, Daniel

Anzeige
AW: Hilfe bei Makroerweiterung
28.03.2009 12:17:12
Uwe
Hi,
TimeSerial ist sicher eine gute Idee (mir war bisher nur DateSerial "untergekommen",habe also mal wieder was gelernt!), aber ich finde die "handwerkliche" Form auch akzeptabel.
Ich denke allerdings, dass eigentliche Problem war der Ausschluß der ersten drei Monate!?
Schau mal ob es so hinhaut (das OR lässt sich bestimmt auch noch umgehen?!):

Function arbdau(va, ve, na, ne)
Dim vorm As Date
Dim nachm As Date
Application.Volatile
If ActiveSheet.Name = "Jan" Or _
ActiveSheet.Name = "Feb" Or _
ActiveSheet.Name = "Mär" Then
'Anfangszeit auf  0 And va > 0 Then vorm = ve - va
If ne > 0 And na > 0 Then nachm = ne - na
arbdau = vorm + nachm
End Function


Gruß
Uwe
(:o)

Anzeige
AW: Hilfe bei Makroerweiterung
28.03.2009 12:40:57
Daniel
Hi
das würde ich prinzipiell mit Variablen lösen:

Dim ArbBegVM as Date 'Arbeitsbeginn Vormittag
Select Case ActiveSheet.Name
Case "Jan", "Feb", "Mrz"
ArbBegVM = 9/24
Case else
ArbBegVM = 9.25/24
end Select
If va 


Gruß, Daniel

AW: Hilfe bei Makroerweiterung
28.03.2009 12:48:49
mike49
Hi Daniel,
danke für deinen Vorschlag. Leider kenne ich mich mit VBA nicht so gut aus. Wie müsste in meinem Fall das komplette Makro lauten um es zu testen?
Gruß
mike49
AW: Hilfe bei Makroerweiterung
28.03.2009 12:56:33
Daniel
Hi
in etwa so:

Function arbdau(va, ve, na, ne)
Dim vorm As Date
Dim nachm As Date
 Dim ArbBegVM as Date 'Arbeitsbeginn Vormittag
Select Case ActiveSheet.Name
Case "Jan", "Feb", "Mrz"
ArbBegVM = 9/24
Case else
ArbBegVM = 9.25/24
end Select

'Anfangszeit auf  If va 
'Ende Anfangszeit
'Anfangszeit auf  0 And va > 0 Then vorm = ve - va
If ne > 0 And na > 0 Then nachm = ne - na
arbdau = vorm + nachm
End Function


allerdings solltest du versuchen, solche Vorschläge zu verstehen und selbst in dein Makro einzubauen und nicht nur einfach einfach vollständige Makros hier abschreiben.
Schließlich bist du für die Funktion und die Richtigkeits deines Makros verantwortlich und Du musst auch in der Lage sein, daß Makro zu pflegen und ggf zu korrigieren.
Gruß, Daniel

Anzeige
AW: Hilfe bei Makroerweiterung
28.03.2009 13:26:25
mike49
Hallo Daniel,
danke für deine Hilfe. Es funktioniert auch, nachdem ich die Schreibweise des Blattes "Mrz" in "Mär" in deinem Makro geändert habe. Wie du siehst, bemühe ich mich, die Makros zu verstehen und zu pflegen. Allerdings bin ich auf Hilfe wie die deine angewiesen und dankbar.
Danke nochmals dafür und allen anderen Helfern.
Gruß
mike49
AW: Hilfe bei Makroerweiterung
28.03.2009 12:51:15
mike49
Hi Uwe,
danke für deine Hilfe. Der Ausschluss der Tabellenblätter bei der Berechnung funzt allerdings nicht. Hast du noch eine andere Idee?
Gruß
mike49
AW: Hilfe bei Makroerweiterung
28.03.2009 12:57:28
Uwe
Hi,
leider hast Du keinen Level angegeben. Teste mal mit F8 (Step by Step) ob dieser Teil:

If ActiveSheet.Name = "Jan" Or _
ActiveSheet.Name = "Feb" Or _
ActiveSheet.Name = "Mär" Then


bei den betreffenden Blättern erkannt wird. Sonst heißen die vielleicht etwas anders (Leerzeichen)?
Bei meinen Tests klappt es nämlich.
Sonst lade mal ein kleines Beispiel hoch.
Gruß
Uwe
(:o)

Anzeige
AW: Hilfe bei Makroerweiterung
28.03.2009 12:53:43
mike49
Hallo Daniel,
du hast bei deiner Variante den Ausschluss der Tabellenblätter Jan,Feb und Mär nicht berücksichtigt.
Gruß
mike49

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige