Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1524to1528
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Themen übertragen

Themen übertragen
24.11.2016 11:03:57
Berndt
Hallo zusammen,
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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Themen übertragen
26.11.2016 10:22:12
Bastian
Hey Berndt
Guck mal so
Gruß Basti
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
Dim V           As Variant
Dim LR
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 Each Ws In ThisWorkbook.Worksheets
With Ws
If Not (.Name = "Themenspeicher" Or .Name = "Werkstudenten") Then
For r = LBound(a, 1) To UBound(a, 1)
If UCase(a(r, 2)) = "X" Then
For Each V In Split(a(r, 3), ",")
If UCase(.Name) Like "*" & UCase(Trim(V)) Then
LR = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
With .Cells(LR, 1)
.Validation.Delete
.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="x"
.Validation.IgnoreBlank = True
.Validation.InCellDropdown = True
.Validation.InputTitle = ""
.Validation.ErrorTitle = ""
.Validation.InputMessage = ""
.Validation.ErrorMessage = ""
.Validation.ShowInput = True
.Validation.ShowError = False
.Borders(xlEdgeBottom).LineStyle = xlDot
.Borders(xlEdgeBottom).TintAndShade = 0
.Borders(xlEdgeBottom).Weight = xlThin
.HorizontalAlignment = xlCenter
End With
.Cells(LR, 2) = a(r, 1)
.Cells(LR, 3) = a(r, 4)
With .Range(.Cells(LR, 2), .Cells(LR, 9))
.Borders(xlEdgeBottom).LineStyle = xlDot
.Borders(xlEdgeBottom).TintAndShade = 0
.Borders(xlEdgeBottom).Weight = xlThin
.HorizontalAlignment = xlLeft
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeLeft).ColorIndex = 0
.Borders(xlEdgeLeft).TintAndShade = 0
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeRight).ColorIndex = 0
.Borders(xlEdgeRight).TintAndShade = 0
.Borders(xlEdgeRight).Weight = xlThin
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideVertical).ColorIndex = 0
.Borders(xlInsideVertical).TintAndShade = 0
.Borders(xlInsideVertical).Weight = xlThin
End With
End If
Next
End If
Next
End If
.Protect , UserInterfaceOnly:=True
End With
x = 0
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Themen übertragen
28.11.2016 08:18:33
Berndt
Hey Bastian, hab erstmal vielen vielen Dank. Bin echt erstaunt. Es funktioniert richtig gut.
Allerdings noch eine Kleinigkeit.
Drücke ich den Button 2x überträgt es mir die Themen doppelt.
Kann man noch eine Prüfzeile einbinden, die sich die jeweiligen Themenspeicher der Mitarbeiter anschaut ob Das Thema in Verbund mit dem Datum schon eingetragen wurde. Wenn ja, dann soll das Thema nicht eingefügt werden (um dopplungen zu vermeiden)
Aber wichtig wäre nicht nur nach dem Thema zu schauen, sondern nach dem Thema in Verbund mit dem Termin aus dem Themenspeicher.
Ich hoffe ich habe mich verständlich ausgedrückt, ansonsten beantworte ich fragen natürlich gerne.
funktioniert das?
VG Berndt
Anzeige
AW: Themen übertragen
28.11.2016 16:04:37
Bastian
Kannst ja mal gucken ob das so geht
Gruß Basti
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
Dim V           As Variant
Dim LR
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 Each Ws In ThisWorkbook.Worksheets
With Ws
If Not (.Name = "Themenspeicher" Or .Name = "Werkstudenten") Then
For r = LBound(a, 1) To UBound(a, 1)
If UCase(a(r, 2)) = "X" Then
For Each V In Split(a(r, 3), ",")
If UCase(.Name) Like "*" & UCase(Trim(V)) Then
LR = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
Set Treffer = Ws.Columns(2).Find("*Themenspeicher*", LookIn:=xlValues)
For p = Treffer.Row + 1 To LR - 1
If .Cells(p, 2) = a(r, 1) And .Cells(p, 3) = a(r, 4) Then
GoTo jump
End If
Next
With .Cells(LR, 1)
.Validation.Delete
.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="x"
.Validation.IgnoreBlank = True
.Validation.InCellDropdown = True
.Validation.InputTitle = ""
.Validation.ErrorTitle = ""
.Validation.InputMessage = ""
.Validation.ErrorMessage = ""
.Validation.ShowInput = True
.Validation.ShowError = False
.Borders(xlEdgeBottom).LineStyle = xlDot
.Borders(xlEdgeBottom).TintAndShade = 0
.Borders(xlEdgeBottom).Weight = xlThin
.HorizontalAlignment = xlCenter
End With
.Cells(LR, 2) = a(r, 1)
.Cells(LR, 3) = a(r, 4)
With .Range(.Cells(LR, 2), .Cells(LR, 9))
.Borders(xlEdgeBottom).LineStyle = xlDot
.Borders(xlEdgeBottom).TintAndShade = 0
.Borders(xlEdgeBottom).Weight = xlThin
.HorizontalAlignment = xlLeft
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeLeft).ColorIndex = 0
.Borders(xlEdgeLeft).TintAndShade = 0
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeRight).ColorIndex = 0
.Borders(xlEdgeRight).TintAndShade = 0
.Borders(xlEdgeRight).Weight = xlThin
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideVertical).ColorIndex = 0
.Borders(xlInsideVertical).TintAndShade = 0
.Borders(xlInsideVertical).Weight = xlThin
End With
End If
jump:
Next
End If
Next
End If
.Protect , UserInterfaceOnly:=True
End With
x = 0
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Anzeige
Hurra
28.11.2016 16:46:51
Berndt
Gang ganz große Klasse Basti.
Funktioniert super.
Ich danke dir.
Schöne Woche noch.
VG Berndt
...eins noch
30.11.2016 10:38:07
Berndt
Eins noch...
wenn ich die erste aufgabenzeile ausfülle und danach den Button "neue Aufgaben einfügen" aus unwissenheit 2x betätige (da ich 2 Aufgaben eintragen möchte), bekomme ich beim 2ten drücken Probleme mit der Summenformel.
Können die von mir erwähnten Schritte und somit das Problem nachvollzogen werden?
LG Berndt
AW: ...eins noch
01.12.2016 18:19:21
Bastian
Ich bin mir zwar nicht sicher Berndt,
Aber meinst du das die SummenFormeln dann aufeinmal in der dritten Aufgabe stehen ?
Das liegt daran das , dass Makro wie es aussieht die letzte zelle in aufgaben ermitteln will und da du da du unter aufgabe 1 noch nixt stehen hast denkt bleibt er bei Zeile 9 als letzt.
Ich steige bei dem Makro nicht wirklich durch was wie du da versuchst die letzte zeile zu ermitteln in UF_neueZeile oder was auch immer =D
Gruß Basti
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige