Clever-Excel-Forum

Normale Version: Überprüfen ob alle Werte vorhanden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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.

Über Hilfe wäre ich sehr dankbar.

Viele Grüße
Hier dei Datei
Hallo.

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.
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
'

'
    Sheets("Bestand").Select
    Range("F2").Select
    Selection.ClearContents
    Range("B4:C4").Select
    Sheets("Bestellung").Select
    Cells.Select
    Selection.ClearContents
    Sheets("Bestand").Select
    Range("B4:C4").Select
    Selection.ClearContents
    Sheets("Bestellung").Select
    Range("A1").Select
    
End Sub

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.
Hallo,

Zitat:ich habe auf einem Tabellenblatt eine Artikelliste. Diese werden über verschiedenste VBA Anwendungen
auf andere Tabellenblätter verteilt. 

Du setzt doch schon VBA ein. Warum suchst Du jetzt eine Formellösung?
Aber Du müßtest schon mehr Infos liefern.


Später: nun warst Du schneller als ich, denn dieser Post sollte eigentlich vor Deiner Antwort platziert sein.
Würde es denn eine Möglichkeit geben über Formel oder VBA?
Wie gesagt eine Integration in meinen Code ist absolut nicht notwendig.
Hallöchen,

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 ...