11.12.2016, 09:20
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.
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)
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)