Thema Datum  Von Nutzer Rating
Antwort
05.09.2014 14:57:05 fc
NotSolved
Blau Erstellung Liste
08.09.2014 14:46:55 Gast3719
NotSolved

Ansicht des Beitrags:
Von:
Gast3719
Datum:
08.09.2014 14:46:55
Views:
767
Rating: Antwort:
  Ja
Thema:
Erstellung Liste

Hi fc,

dann verwende doch eine Collection (oder Dictionary). Damit kannst du über den Schlüssel (z.B. der Name der Person, was jedoch nicht immer eineindeutig ist) die Stunden aufsummieren und anschließend die Liste ausgeben.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Option Explicit
 
Sub Bsp01()
   
  Dim colEmployees As VBA.Collection
  Dim vntEmployee As Variant
   
  Set colEmployees = New VBA.Collection
   
  AddEmployee01 colEmployees, "Tobi", 1
  AddEmployee01 colEmployees, "Klaus", 0.82
  AddEmployee01 colEmployees, "Jasmin", 1.1
   
  AddEmployee01 colEmployees, "Karl", 0.4
  AddEmployee01 colEmployees, "Mia", 0.52
  AddEmployee01 colEmployees, "Jasmin", 0.75
   
  For Each vntEmployee In colEmployees
    Debug.Print Split(vntEmployee, ";")(0), CSng(Val(Split(vntEmployee, ";")(1)))
  Next
   
End Sub
 
Private Sub AddEmployee01(List As VBA.Collection, Name As String, Hours As Single)
   
  Dim v As Variant
   
  On Error Resume Next
    v = Split(List(Name), ";")
    v = Val(v(LBound(v) + 1))
    Call List.Remove(Name)
  On Error GoTo 0
   
  List.Add Key:=Name, _
          Item:=Name & ";" & Replace$(CSng(v) + Hours, Application.International(XlApplicationInternational.xlDecimalSeparator), ".", Count:=1)
   
End Sub
 
'##########################################
 
Sub Bsp02()
   
  Dim dicEmployees As Object
  Dim vntEmployees As Variant
  Dim i As Long
   
  Set dicEmployees = CreateObject("Scripting.Dictionary")
  dicEmployees.CompareMode = vbTextCompare
   
  AddEmployee02 dicEmployees, "Tobi", 1
  AddEmployee02 dicEmployees, "Klaus", 0.82
  AddEmployee02 dicEmployees, "Jasmin", 1.1
   
  AddEmployee02 dicEmployees, "Karl", 0.4
  AddEmployee02 dicEmployees, "Mia", 0.52
  AddEmployee02 dicEmployees, "Jasmin", 0.75
   
  vntEmployees = dicEmployees.Keys
   
  For i = LBound(vntEmployees) To UBound(vntEmployees)
    Debug.Print vntEmployees(i), dicEmployees(vntEmployees(i))
  Next
   
End Sub
 
Private Sub AddEmployee02(Dictionary As Object, Name As String, Hours As Single)
   
  Dim h As Single
   
  If Dictionary.Exists(Name) Then
    h = Dictionary(Name)
    Call Dictionary.Remove(Name)
  End If
   
  Dictionary.Add Key:=Name, Item:=h + Hours
   
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
05.09.2014 14:57:05 fc
NotSolved
Blau Erstellung Liste
08.09.2014 14:46:55 Gast3719
NotSolved