Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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)
Antworten Top
#12
hi André,

(11.12.2016, 08: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)
Antworten 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)
Antworten Top


Gehe zu:


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