AW: Offen stellen vergessen oWt
12.11.2019 02:11:53
fcs
Hallo Ernst,
ich hab in deiner ursprünglichen Beispiel-Datei mal 2 Makros erstellt.
Probiere mal, ob die das gewünschte Ergebnis liefern.
LG
Franz
Sub WerteKopieren()
'übertragen von Tabelle2 (Tabelle2) nach Tab1999 (Tab 1999)
Dim Zeile As Long
Dim ZeileMax As Long
Dim Treffer As Range
Dim Nummer As Range
Dim Namen As Range
Dim lngOffset As Long
Dim wksZiel As Worksheet
Dim wksQuelle As Worksheet
Dim StatusCalc As Long
Set wksZiel = Tab1999
Set wksQuelle = Tabelle2
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
With wksZiel
ZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
'Altdaten löschen in Spalten C bis G
.Range(.Cells(1, 3), .Cells(ZeileMax, 7)).ClearContents
'Keglernamen kopieren in Zeile 1
With wksQuelle
.Range(.Cells(1, 3), .Cells(1, 7)).Copy
End With
.Range(.Cells(1, 3), .Cells(1, 7)).PasteSpecial Paste:=xlPasteValues
For Zeile = 2 To ZeileMax
Set Nummer = .Range("A" & Zeile)
If Not Nummer Is Nothing Then
Set Treffer = wksQuelle.Columns("A").Find(what:=Nummer.Value, _
LookIn:=xlValues, lookat:=xlWhole)
If Not Treffer Is Nothing Then
'Werte aus Spalten C bis G
For lngOffset = 2 To 6
Nummer.Offset(0, lngOffset).Value = _
Treffer.Offset(0, lngOffset).Value
Next lngOffset
End If
End If
Next Zeile
With Application
.Calculate
.Calculation = StatusCalc
.ScreenUpdating = True
End With
End With
End Sub
Sub WerteKopieren_Tab1999_nach_Name()
'übertragen von Tab1999 (Tab 1999) nach Tabellenblätter mit Namen
Dim Zeile As Long
Dim ZeileMax As Long
Dim Treffer As Range
Dim Nummer As Range
Dim Namen As Range
Dim lngSpalte As Long
Dim iTab As Integer
Dim wksZiel As Worksheet
Dim wksQuelle As Worksheet
Dim bolName As Boolean
Dim StatusCalc As Long
Set wksQuelle = Tab1999
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
For lngSpalte = 3 To 7 'Spalten mit den Namen in Zeile 1 des Quellblatts
bolName = False
For iTab = 3 To ThisWorkbook.Sheets.Count
Set wksZiel = ThisWorkbook.Sheets(iTab)
With wksZiel
'Prüfen, ob Name mit Name in Quelle übereinstimmt
If .Range("C1") = wksQuelle.Cells(1, lngSpalte).Value Then
bolName = True
ZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
'Altdaten löschen in Spalte C ab Zeile 2
.Range(.Cells(2, 3), .Cells(ZeileMax, 3)).ClearContents
For Zeile = 2 To ZeileMax
Set Nummer = .Range("A" & Zeile)
If Not Nummer Is Nothing Then
Set Treffer = wksQuelle.Columns("A").Find(what:=Nummer.Value, _
LookIn:=xlValues, lookat:=xlWhole)
If Not Treffer Is Nothing Then
Nummer.Offset(0, 2).Value = _
wksQuelle.Cells(Treffer.Row, lngSpalte).Value
End If
End If
Next Zeile
End If
End With
Next iTab
If bolName = False Then
MsgBox "Kein Blatt mit Name """ _
& wksQuelle.Cells(1, lngSpalte).Value & """ in C1 vorhanden!"
End If
Next lngSpalte
With Application
.Calculate
.Calculation = StatusCalc
.ScreenUpdating = True
End With
End Sub