Hallo,
bei verwenden von Find sollte man besser alle Parameter angeben (siehe auch in der Hilfe),
sonst kann es durch eine zuvor gemachte Suche z. Bsp. von Hand zu Fehlern kommen
wegen der Einstellungen in der Suche die nicht zurückgesetzt werden.
Zudem sollte man immer die Variablen Deklarieren, da ich aber nicht weis, welche Werte bei dir in den Zellen stehen habe ich jetzt einfach mal Variant verwendet.
Habe den Code nicht getestet!
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Abbrechen As Boolean)
Dim oWB As Workbook, rngRange As Range, rngSuchZelle As Range
Dim varWerte(0 To 7) As Variant 'Array für die Daten
Dim varSuchWert As Variant 'Variable für die Suche
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Worksheets("Envanter").Activate
ActiveWindow.ActivateNext
varSuchWert = Range("D7").Value
varWerte(0) = Range("h61").Value
varWerte(1) = Range("h63").Value
varWerte(2) = Range("h65").Value
varWerte(3) = Range("e61").Value
varWerte(4) = Range("e63").Value
varWerte(5) = Range("e65").Value
varWerte(6) = Range("r67").Value
varWerte(7) = Range("o67").Value '? siehe unten
Set oWB = Workbooks.Open("D:\Ofis\Papatya\Envanterler\Envanter.xls")
Set rngRange = oWB.Sheets("Tabelle1").Range("A:A") 'Tabellenname anpassen
Set rngSuchZelle = rngRange.Find(What:=varSuchWert, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If Not rngSuchZelle Is Nothing Then 'wurde Suchwert gefunden?
With rngSuchZelle
'Daten Übertragen *********************************************************
.Offset(0, 3).Value = varWerte(0)
.Offset(0, 4).Value = varWerte(1)
.Offset(0, 5).Value = varWerte(2)
.Offset(0, 7).Value = varWerte(3)
.Offset(0, 8).Value = varWerte(4)
.Offset(0, 9).Value = varWerte(5)
.Offset(0, 10).Value = varWerte(6)
.Offset(0, 11).Value = varWerte(7) '? wurde in Deinem Code nicht Übertragen
'**************************************************************************
Set rngSuchZelle = Nothing
End With
oWB.Close True 'speichern und schließen
Else
oWB.Close False 'schließen ohne speichern
MsgBox "'" & varSuchWert & "' wurde nicht gefunden!"
End If
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set oWB = Nothing: Set rngRange = Nothing
End Sub
Gruß Tino