10.04.2019, 09:02 (Dieser Beitrag wurde zuletzt bearbeitet: 10.04.2019, 09:10 von deschroe.)
Hallo,
ich habe auf einem Tabellenblatt eine Artikelliste. Diese werden über verschiedenste VBA Anwendungen auf andere Tabellenblätter verteilt. Ich müsste nun für mich eine Signalkennzeichnung erstellen, sobald alle Artikel aus der Liste weiterverarbeitet wurden. Die Tabellenblätter sind nicht indizierbar und haben immer unterschiedliche Namen. Zudem ist die Anzahl der Tabellenblätter auch nicht identisch. Anbei mal eine Beispieldatei (ohne VBA).
Meine erste Idee war folgende Formel zu nutzen:http://www.herber.de/excelformeln und bitte suchen .../formeln.html?welcher=233
Diese muss ich allerdings wieder verwerwerfen, da die Anzahl an Tabellenblätter, sowie deren Namen nicht immer identisch sind.
du kannst das ggf. mit VBA prüfen. Dazu müsste man aber mehr wissen: Kommen die Artikel in den anderen Blättern einmalig vor? Wenn die Artikel schon per VBA verteilt werden, dann können diese Routinen doch schon prüfen, ob alles verteilt wurde. Dazu müsste man etwas mehr von den VBA-Routinen kennen.
Herzliche Grüße aus dem Rheinland Jörg
[Windows 10, Microsoft 365]
Folgende(r) 1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag:1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag 28 • deschroe
Hallo, vielen Dank für deine Antwort. Über den folgenden Code werden die Artikel verteilt.
Code:
Function WorkSheetExists(ByVal ws As String) As Boolean On Error Resume Next WorkSheetExists = Not Worksheets(ws) Is Nothing End Function
Sub Bestelldatei() Dim ws As Worksheet
Application.ScreenUpdating = False
If WorkSheetExists(Worksheets("Bestand").Range("E4")) Then Set ws = Worksheets(Worksheets("Bestand").Range("E4").Value) Else Set ws = Worksheets.Add(after:=Worksheets(3)) ws.Name = Worksheets("Bestand").Range("E4") End If
With ws .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Sheets("Bestand").Range("B2").Value .Cells(.Rows.Count, 1).End(xlUp).Offset(, 1).Value = Sheets("Bestand").Range("M32").Value .Cells(.Rows.Count, 1).End(xlUp).Offset(, 2).Value = Sheets("Bestand").Range("M35").Value MsgBox "Hinzugefügt zu " & Worksheets("Bestand").Range("E4").Value End With
If Worksheets("Bestand").Range("M31").Value <> "" And Worksheets("Bestand").Range("M31").Value <> 0 Then If WorkSheetExists(Worksheets("Bestand").Range("E5")) Then Set ws = Worksheets(Worksheets("Bestand").Range("E5").Value) Else Set ws = Worksheets.Add(after:=Worksheets(3)) ws.Name = Worksheets("Bestand").Range("E5") End If
With ws .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Sheets("Bestand").Range("B2").Value .Cells(.Rows.Count, 1).End(xlUp).Offset(, 1).Value = Sheets("Bestand").Range("M31").Value .Cells(.Rows.Count, 1).End(xlUp).Offset(, 2).Value = Sheets("Bestand").Range("M35").Value MsgBox "Hinzugefügt zu " & Worksheets("Bestand").Range("E5").Value End With End If
Application.ScreenUpdating = True End Sub
Über den nachfolgenden Code werden die Bestelldaten bzw. die Artikelliste gelöscht.
Code:
Option Explicit
Sub Bestelldatenlöschen() ' ' Bestelldatenlöschen Makro '
Zwischen diesen beiden Schritten möchte ich eigentlich eine Überprüfung haben, ob alle Artikel wirklich verteilt wurden auf Tabellen. Ob in gesonderter Form oder in einen der Codes mit eingebunden wäre mir egal. Mir fehlt nur leider das Können.
füge doch einfach neben den Artikeln eine Spalte "Übertragen" ein und lass den Code dann ok oder x oder was auch immer eintragen. Wenn Du dann noch irgendwo ein Erfolgsergebnis brauchst, zählst Du, ob Artikel und ok in gleicher Anzahl vorliegen ...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)