Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Sub AlleRechnungenErstellen()
  2.  
  3.     Dim members As Collection
  4.     Set members = New Collection
  5.  
  6.     Dim memberAddrs As Object
  7.     Set memberAddrs = CreateObject("Scripting.Dictionary")
  8.  
  9.     Dim row, row2 As Long
  10.     Dim maxRow, maxRow2 As Long
  11.     Dim workbooks2 As Object
  12.     Dim workbooks3 As Object
  13.     Dim sheet, sheet2, sheet3 As Worksheet
  14.    
  15.     'Sheet2 ist das Auftragsverzeichnis
  16.    
  17.     Set sheet2 = ActiveWorkbook.Worksheets(1)
  18.     maxRow = sheet2.Cells(sheet2.Rows.Count, "A").End(xlUp).row
  19.    
  20.     'Fenster öffnet sich um Pfad zur Redmine.xlsx abzufragen
  21.    
  22.     Dim intChoice As Integer
  23.     Dim strPath As String
  24.  
  25.     'Es darf nur eine Datei vom Benutzer ausgewält werden
  26.    Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
  27.     'File Dialog sichtbar machen für Benutzer
  28.    intChoice = Application.FileDialog(msoFileDialogOpen).Show
  29.     'Abfrage welche Auswahl der Benutzer getroffen hat
  30.    If intChoice <> 0 Then
  31.     'Speicher Filepath den der Benutzer ausgewählt hat als String
  32.    strPath = Application.FileDialog( _
  33.     msoFileDialogOpen).SelectedItems(1)
  34.  
  35.     End If
  36.    
  37.    
  38.    
  39.     'Workbooks2 = Redmine Datei
  40.    Set workbooks2 = Workbooks.Open(strPath)
  41.  
  42.     Set sheet = workbooks2.Worksheets(1)
  43.  
  44.     maxRow2 = sheet.Cells(sheet.Rows.Count, "A").End(xlUp).row
  45.  
  46.  
  47.     Dim answer As Integer
  48.     Dim language As Integer
  49.     Dim answer2 As Integer
  50.     Dim answer3 As Integer
  51.     Dim curName As String
  52.     Dim curHour As Double
  53.     Dim curAddr As String
  54.     Dim curName2 As String
  55.     Dim curAddr2 As String
  56.     Dim curAddressed As String
  57.     Dim curNr As String
  58.     Dim curAnrede As String
  59.     Dim curPLZ As String
  60.     Dim curOrt As String
  61.     Dim curAuftragsDatum As String
  62.     Dim curStundensatz As Integer
  63.     Dim RechnungsSumme As Double
  64.     Dim vormonat As Double
  65.     Dim Speicher As String
  66.    
  67.    
  68.     For row = 2 To maxRow2  'Kommazahlen in Zahl mit Punkt umwandeln
  69.    Speicher = sheet.Cells(row, 7)
  70.     Speicher = Replace(Speicher, ",", ".")
  71.     sheet.Cells(row, 7).Value = Speicher
  72.     Next row
  73.    
  74.    
  75.  
  76.     For row2 = maxRow To 3 Step -1  'Läuft von unten nach oben
  77.        curName2 = sheet2.Cells(row2, 2)
  78.         curAddr2 = sheet2.Cells(row2, 3)
  79.         curAddressed = sheet2.Cells(row2, 6)
  80.         vormonat = sheet2.Cells(row2, 22)
  81.        
  82.      
  83.        
  84.         If IsNumeric(sheet2.Cells(row2, 12)) Then
  85.         curStundensatz = sheet2.Cells(row2, 12)
  86.         End If
  87.        
  88.         curAnrede = sheet2.Cells(row2, 5)
  89.         If InStr(1, sheet2.Cells(row2, 4), " ") Then
  90.             curPLZ = Split(sheet2.Cells(row2, 4), " ")(0)
  91.             curOrt = Split(sheet2.Cells(row2, 4), " ")(1)
  92.         End If
  93.  
  94.         curAuftragsDatum = sheet2.Cells(row2, 14)
  95.        
  96.         If Not memberAddrs.Exists(curName2) Then
  97.             Set newMember = New auftrag
  98.             Call newMember.Create(curName2, 0, curAddr2, curAddressed, curAnrede, curPLZ, curOrt, curAuftragsDatum, curStundensatz, vormonat)
  99.             Call members.Add(newMember)
  100.             Call memberAddrs.Add(curName2, curAddr2)
  101.         End If
  102.        
  103.     Next row2
  104.    
  105.    
  106.  
  107.     For row = 2 To maxRow2
  108.    
  109.         curName = sheet.Cells(row, 1)
  110.         curAddr = memberAddrs(curName)
  111.         curHour = Val(sheet.Cells(row, 7))
  112.        
  113.        
  114.        
  115.         If MemberExist(members, curName) Then
  116.  
  117.             Set checkMember = GetMemberByName(members, curName)
  118.             checkMember.AddHours (Val(curHour))
  119.        Else
  120.        
  121.         Set newMember = New auftrag
  122.         Call newMember.Create(curName, 0, curAddr, "Nicht im Auftragsverzeichnis", "Nicht im Auftragsverzeichnis", "Nicht im Auftragsverzeichnis", "Nicht im Auftragsverzeichnis", "Nicht im Auftragsverzeichnis", 0, 0)
  123.         Call members.Add(newMember)
  124.         End If
  125.    
  126.     Next row
  127.    
  128.     Dim strEintrag As Integer
  129.     strEintrag = InputBox("Tragen Sie die aktuelle Rechnungsnummer ein:")
  130.  
  131.     Dim member As auftrag
  132.     Dim number As Integer
  133.     number = 1
  134.    
  135.    
  136.    
  137.      
  138.  
  139.  
  140.     For Each member In members
  141.    
  142.    
  143.        
  144.        
  145.         If member.GetHours > 0 Then
  146.        
  147.         RechnungsSumme = (member.GetHours * member.GetStundensatz) + ((member.GetHours * member.GetStundensatz) / 100) * 19
  148.          
  149.         sheet.Cells(number, "H").Value = member.GetName
  150.         number = number + 1
  151.    
  152.         MsgBox ("Name: " & member.GetName & vbNewLine & "Stunden: " & member.GetHours & vbNewLine & "Straße: " & member.GetAddr & vbNewLine & "PLZ: " & member.GetPLZ & vbNewLine & "Ort: " & member.GetOrt & vbNewLine & "Anrede: " & member.GetAnrede & vbNewLine & "Ansprechpartner: " & member.GetAddressed & vbNewLine & "Stundensatz: " & member.GetStundensatz & vbNewLine & "Rechnungssumme: " & RechnungsSumme & vbNewLine & "Stunden Vormonat: " & member.GetStundenVormonat)
  153.        
  154.      
  155.      
  156.            
  157.         End If
  158.        
  159.        
  160.      
  161.      
  162.     Next member
  163.    
  164.    
  165.    
  166.    
  167.    
  168.     UserForm1.Show
  169.    
  170. End Sub
  171.         Sub userformstarten()
  172.    UserForm1.Show
  173. End Sub
  174.  
  175.  
  176.        
  177.        
  178.        
  179.    
  180.    
  181.  
  182. Private Function GetMemberByName(list As Collection, name As String) As auftrag
  183.     Dim member As auftrag
  184.  
  185.     For Each member In list
  186.         If member.GetName = name Then
  187.             Set GetMemberByName = member
  188.             Exit Function
  189.         End If
  190.     Next member
  191. End Function
  192. Private Function MemberExist(list As Collection, name As String) As Boolean
  193.     Dim member As auftrag
  194.  
  195.     For Each member In list
  196.         If member.GetName = name Then
  197.             MemberExist = True
  198.             Exit Function
  199.         End If
  200.     Next member
  201.  
  202.     MemberExist = False
  203. End Function
  204.  
  205.  
  206.  
  207. _________________________________________________________________________________________________________-
  208.  
  209. KLASSENMODUL
  210.  
  211. Private M_name As String
  212. Private M_hours As Double
  213. Private M_addressed As String
  214. Private M_addr As String
  215. Private M_stundensatz As Integer
  216. Private M_anrede As String
  217. Private M_plz As String
  218. Private M_ort As String
  219. Private M_StundenVormonat As Double
  220. Private M_auftragsDatum As String
  221.  
  222. Public Sub Create(ByVal name As String, ByVal hours As Double, ByVal addr As String, ByVal addressed As String, ByVal anrede As String, ByVal plz As String, ByVal ort As String, ByVal auftrag As String, ByVal stundensatz As Integer, ByVal stundenVormonat As Double)
  223.     M_name = name
  224.     M_hours = hours
  225.     M_addr = addr
  226.     M_addressed = addressed
  227.     M_anrede = anrede
  228.     M_plz = plz
  229.     M_ort = ort
  230.     M_auftragsDatum = auftrag
  231.     M_stundensatz = stundensatz
  232.     M_StundenVormonat = stundenVormonat
  233.    
  234. End Sub
  235.  
  236. Public Function GetStundensatz() As Integer
  237. GetStundensatz = M_stundensatz
  238. End Function
  239. Public Function GetAnrede() As String
  240.     GetAnrede = M_anrede
  241. End Function
  242. Public Function GetAuftragsdatum() As String
  243.     GetAuftragsdatum = M_auftragsDatum
  244. End Function
  245. Public Function GetPLZ() As String
  246.     GetPLZ = M_plz
  247. End Function
  248. Public Function GetOrt() As String
  249.     GetOrt = M_ort
  250. End Function
  251. Public Function GetName() As String
  252.     GetName = M_name
  253. End Function
  254. Public Function GetHours() As Double
  255.     GetHours = M_hours
  256. End Function
  257. Public Function GetAddr() As String
  258.     GetAddr = M_addr
  259. End Function
  260. Public Function GetStundenVormonat() As Double
  261.     GetStundenVormonat = M_StundenVormonat
  262. End Function
  263. Public Function GetAddressed() As String
  264.     GetAddressed = M_addressed
  265. End Function
  266.  
  267. Public Sub AddHours(hours As Double)
  268.     M_hours = M_hours + hours
  269. End Sub
  270.  
  271. _________________________________________________________________________________________________________-
  272.  
  273. USERFORM
  274.  
  275. Private Sub CommandButton1_Click()
  276.  
  277. End Sub
  278.  
  279. Private Sub RechnungStellen_Click()
  280. Dim member As auftrag
  281. For i = 1 To 10
  282. If Me.Controls("TextBox" & CStr(i)).Text <> "" Then
  283.     If Me.Controls("CheckBox" & CStr(i)).Value = True Then
  284.     MsgBox (Me.Controls("CheckBox" & CStr(i)).Value & " RECHNUNG WIRD ERSTELLT")
  285.  'For Each member In members
  286. 'If Me.Controls("CheckBox" & CStr(i)).Value = member.GetName Then
  287.        
  288.   '         MsgBox ("Member Existiert")
  289.   '      End If
  290.  
  291. ' Next member
  292.  
  293. End If
  294. End If
  295.  
  296. Next
  297. End Sub
  298.  
  299. Private Sub UserForm_Initialize()
  300.   Dim i As Byte
  301.   Dim currentName As String
  302.  
  303.  
  304.  
  305.     Dim workbooks2 As Object
  306.    
  307.     Dim sheet As Worksheet
  308.    
  309.      Dim intChoice As Integer
  310.     Dim strPath As String
  311.  
  312.     'Es darf nur eine Datei vom Benutzer ausgewält werden
  313.    Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
  314.     'File Dialog sichtbar machen für Benutzer
  315.    intChoice = Application.FileDialog(msoFileDialogOpen).Show
  316.     'Abfrage welche Auswahl der Benutzer getroffen hat
  317.    If intChoice <> 0 Then
  318.     'Speicher Filepath den der Benutzer ausgewählt hat als String
  319.    strPath = Application.FileDialog( _
  320.     msoFileDialogOpen).SelectedItems(1)
  321.  
  322.     End If
  323.  
  324.  
  325.     Set workbooks2 = Workbooks.Open(strPath)
  326.  
  327.     Set sheet = workbooks2.Worksheets(1)
  328.  
  329.   For i = 1 To 10
  330.     '8 = H
  331.    currentName = Cells(i, 8).Value
  332.     UserForm1.Controls("TextBox" & CStr(i)).Text = currentName
  333.   Next
  334. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement