... schrieb am 16.11.2010 14:14:23:
 
 ... schrieb am 16.11.2010 14:06:12:
 
 
 Sub Eintrag()
 Dim WB As Excel.Workbook
 Dim LetzteZeile As Long
 Dim SuchBegriff As Variant
 Dim Gefunden As Variant
 On Error Resume Next
 Dim LaufZahl As Long
 With ThisWorkbook.ActiveSheet
 LetzteZeile = .Cells.Rows.Count
 LetzteZeile = .Cells(LetzteZeile, 1).End(xlUp).Row
 For Each WB In Workbooks
 If WB.Name <> ThisWorkbook.Name Then
 SuchBegriff = WB.ActiveSheet.Range("A2")
 Gefunden = Application.WorksheetFunction.Match(SuchBegriff, .Range(.Cells(1, 1), .Cells(LetzteZeile, 1)), 0)
 If Err.Number <> 0 Then Err.Clear
 If IsEmpty(Gefunden) Then
 .Cells(LetzteZeile + 1, 1) = SuchBegriff
 .Cells(LetzteZeile + 1, 2) = Date
 .Cells(LetzteZeile + 1, 2).NumberFormat = "dd.MM.YYYY"
 LetzteZeile = LetzteZeile + 1
 MsgBox "Belegnummer " & SuchBegriff & " wurde eingelesen!", vbInformation, "Hinweis..."
 WB.Close True
 Else
 MsgBox "Belegnummer " & SuchBegriff & " wurde bereits am " & Format(.Cells(Gefunden, 2), "dd.MM.yyyy") & " eingelesen!", vbExclamation, "Hinweis..."
 End If
 End If
 Next
 End With
 ThisWorkbook.Close True
 End Sub
 
 
 siehe oben.
 Severus
 
 wenn der beleg bereits besteht, öffnet sich die messagebox (MsgBox "Belegnummer " & SuchBegriff & " wurde bereits am " & Format(.Cells(Gefunden, 2), "dd.MM.yyyy") & " eingelesen!", vbExclamation, "Hinweis...")
 , drückt man auf ok, wird die datei wieder geschlossen. das passt so...
 
 aber bei der messagebox, (MsgBox "Belegnummer " & SuchBegriff & " wurde eingelesen!", vbInformation, "Hinweis...") schließt sich die falsche datei. es soll sich hier auch die datei schließen, in der die belege eingelesen werden und nicht die, aus der die belegnummer stammt.
 
 hat sich erledigt! danke
 
 Denke ich auch. Es werden alle Dateien geschlossen, die offen sind. Die in die geschrieben wird naturgemäß als Letzte.
 Wenn die anderen offen bleiben sollen bitte den code
 WB.Close True
 löschen oder auskommentieren (falls Du es später doch noch willst)
 Severus     |