ich habe folgendes Problem:
im Sheet "Themenspeicher" habe ich Themen, Verantwortliche und die dazugehörigen Termine in einer Tabelle stehen
Mit einem Makro möchte ich nun die Themen mithilfe der Verantwortlichen, an die Verantwortlichen-Sheets übertragen (wenn diese für die Übergabe mit einem x gekennzeichnet sind).
Ich habe dazu auch schon ein Makro.
Allerdings funktioniert dies nach neuer Logik nicht mehr.
Vorher war nämlich der Sheetname (z.B. Herr A) gleich den Verantwortlichen (z.B. Herr A). Nun habe ich aber im Themenspeicher das Herr bzw. Frau weggelassen, was das Makro stört.
Ich hänge euch mal meinen Code an und eine dazugehörige Bsp.Datei, die das Thema zusätzlich Verständlich macht, an.
Private Sub CommandButton3_Click()
' Themen auf Mitarbeiter verteilen
Dim a
Dim i As Long
Dim bis As Long
Dim von As Long
Dim Treffer As Range
Dim Ws As Worksheet
Dim FindStr As String
Dim maxZell As Long
Dim c As Range
Dim rng As Range
Dim Zell As Range
Application.ScreenUpdating = False
For Each Ws In ThisWorkbook.Worksheets
Ws.Unprotect
Next
Set Treffer = Worksheets("Themenspeicher").Columns(2).Find("*Themenspeicher*", LookIn:= _
xlValues)
von = Treffer.Row + 1 'erste Zelle nach Themenspeicher in Sheet Themenspeicher
bis = Worksheets("Themenspeicher").Range("B" & Rows.Count).End(xlUp).Row + 1
a = Range("B" & von & ":F" & bis)
For i = 1 To UBound(a)
If a(i, 2) = "x" Then
bis = Sheets(a(i, 3)).Range("B2000").End(xlUp).Row + 1
bis1 = Sheets(a(i, 4)).Range("C2000").End(xlUp).Row + 1
Ab = Application.Match("aus Themenspeicher übertragen", Worksheets(a(i, 3)).Range("B: _
B"), 0)
Ab1 = Application.Match("Termin", Worksheets(a(i, 4)).Range("C:C"), 0)
'Doppelte Werte werden vermieden
If IsError(Application.Match(a(i, 1), Worksheets(a(i, 3)).Range("B" & Ab & ":B" & _
bis), 0)) _
& IsError(Application.Match(a(i, 4), Worksheets(a(i, 3)).Range("C" & Ab1 & ":C" & _
bis1), 0)) _
Then
Sheets(a(i, 3)).Range("B" & bis) = a(i, 1)
Sheets(a(i, 3)).Range("C" & bis) = a(i, 4)
Sheets(a(i, 3)).Range("B8:C8").Copy ' da ist das gleiche Format
Sheets(a(i, 3)).Range("B" & bis).Resize(, 2).PasteSpecial xlFormats
Sheets(a(i, 3)).Range("B" & bis).HorizontalAlignment = xlLeft
Sheets(a(i, 3)).Range("C" & bis).NumberFormat = "dd.mm.yyyy"
End If
End If
Next
...
Problematisch (bzw. veraltet) ist hier noch der Teil Sheets(a(i, 3)) denn damit oben beschriebenes Ausgedrückt (Sheetname = Name Verantwortlicher) (dem ist ja aber jetzt nicht mehr so).Hier die Bsp.Datei
https://www.herber.de/bbs/user/109683.xlsm
VG Berndt