Herausforderung Anwesenheit + Rechnung erstellen
#11
Hallöchen,

anbei mal ein erster Code. Zur Ausführung müssen folgende Bedingungen zutreffen:
1. Es gibt bereits die Rechnungsdatei, Rechnung und Anwesenheit müssen geöffnet sein
2. Die Datei mit der Rechnung muss aktiv sein
3. Der Name wird einzeln auf der Rechnung angegeben, also in A24 dann Besucher/in: Fr. und in B24 Else Mustermann
4. Der Namenseintrag in der Anwesenheit muss dem Namenseintrag in der Rechnung entsprechen.
5. Es werden zur Kennung der Besuche nur kleine x verwendet
Wo der Code steht, ist egal, er könnte auch in einer dritten Datei stehen.
Es gibt noch etwas Verbesserungspotential, z.B. könnte der Code die Anwesenheit öffnen, man könnte kleine und große x auszählen, die Anzahl der Tage könnte in D30 direkt eingetragen werden - ohne Formel ZÄHLENWENN usw.

Code:
Sub TageHolen()
'Variablendeklaration
Dim vGefunden
'String
Dim strName$, strTage$
'Integer
Dim iCnt1%, iCnt2%
'Name aus B22 holen
strName = Cells(24, 2).Value
'Mit der Anwesenheit, Monatsblatt wie Rechnung. Datei muss offen sein!
With Workbooks("Anwesenheit 2016.xlsm").Sheets(ActiveSheet.Name)
  'Name finden und der Variable vGefunden zuweisen
  Set vGefunden = .Range("B9:B26").Find(What:="Else Mustermann", After:=ActiveCell, LookIn:= _
    xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
    xlNext, MatchCase:=False, SearchFormat:=False)
  'Wenn was gefunden wurde, dann
  If Not vGefunden Is Nothing Then
    For iCnt1 = 4 To 34
      If .Cells(vGefunden.Row, iCnt1) = "x" Then
        strTage = strTage & iCnt1 - 1 & ","
        iCnt2 = iCnt2 + 1
      End If
    Next
  'und wenn nicht,
  Else
    'Meldung ausgeben
    MsgBox "Bitte Name prüfen!" & vbLf & strName
  'ende Wenn was gefunden wurde, dann
  End If
  'Wenn Tage eingetragen wurden, dann
  If Len(strTage) > 0 Then
    'Anwesenheitseintrag in A27
    Cells(27, 1).Value = "Anwesend: " & iCnt2 & " Tage: " & strTage
  'Ende Wenn Tage eingetragen wurden, dann
  End If
End With
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#12
hi André,

(11.12.2016, 09:20)schauan schrieb: anbei mal ein erster Code.

bei mir klappt es mit den beiden Dateien nicht.
Auch wenn ich den Namen gleich schreibe und in Rechnung B24.
Es kommt Laufzeitfehler 13 in Zeile:
Set vGefunden = .Range("B9:B26").Find(What:="Fr. Else Mustermann", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False)
Top
#13
Hallo Ralf,
Bei mir läuft alles. Hast du die Bedingungen wie oben beschrieben eingehalten?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste