Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
836to840
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
836to840
836to840
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Variablen in Array speichern und in MsgBox ausgebe

Variablen in Array speichern und in MsgBox ausgebe
17.01.2007 19:09:44
Timo
Hallo!
Mit dem folgenden Makro durchsuche ich eine Arbeitsmappe nach bestimmten Tabellenblättern und drucke diese aus. Am Ende wird die Anzahl der gedruckten Blätter angezeigt.
Nun mein Problem: Ich möchte alle die Nummern, die nicht gefunden wurden, mit in der MsgBox ausgeben. Ich habe es schon mit einem Array versucht, doch wie kann ich diese Werte dann in der MsgBox ausgeben?
Hat jemand eine bessere Idee?

Private Sub FindSheets()
Dim ArtNr
Dim MySheet
Dim Max As Integer, Gedruckt As Integer
Gedruckt = 0
Sheets("0000-START").Select
For Max = 1 To 100
If Cells(Max, 1).Value = "" Then Exit For
Next
For x = 2 To Max - 1
ArtNr = Worksheets("0000-START").Cells(x, 1)
If ArtNr = "" Then Exit Sub
For Each MySheet In ActiveWorkbook.Worksheets
If InStr(MySheet.Name, ArtNr) Then
Sheets(MySheet.Name).Select
Worksheets(MySheet.Name).PrintOut Copies:=1, Collate:=True
Gedruckt = Gedruckt + 1
Exit For
Else
'nichts
End If
Next
' Hier die werte ins Array eintragen!?!
Next
MsgTmp = MsgBox("  Artikel insgesamt: " & Max - 2 & Chr(13) _
& "  davon gedruckt: " & Gedruckt & Chr(13) _
& "  Unbekannte Artikel: " & (Max - 2) - Gedruckt, vbInformation + vbOKOnly, "Info")
' hier sollen außerdem die fehlenden Nummern angezeigt werden
End Sub

Meine Zweite Frage:
Ist es möglich, ein UserForm an eine Tabelle zubinden, sodass beim kopieren der Tabelle in eine andere Arbeitsmappe auch das Formular mit kopiert wird?
danke im voraus
Timo

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablen in Array speichern und in MsgBox ausgebe
17.01.2007 21:11:49
Josef
Hallo Timo,
vielleicht so.
Private Sub FindSheets()
    Dim ArtNr As Variant
    Dim MySheet As Worksheet
    Dim lngRow As Long, lngC As Long
    Dim Gedruckt As Integer
    Dim strMissing As String
    
    lngRow = Sheets("0000-START").Cells(Rows.Count, 1).End(xlUp).Row
    
    For lngC = 2 To lngRow
        ArtNr = Worksheets("0000-START").Cells(lngC, 1)
        If ArtNr = "" Then Exit Sub
        For Each MySheet In ActiveWorkbook.Worksheets
            If InStr(1, MySheet.Name, ArtNr) > 0 Then
                MySheet.PrintOut
                Gedruckt = Gedruckt + 1
                Exit For
            Else
                strMissing = strMissing & ArtNr & vbLf
            End If
        Next
    Next
    
    MsgTmp = MsgBox(" Artikel insgesamt: " & lngRow - 2 & vbLf _
        & " davon gedruckt: " & Gedruckt & vbLf _
        & " Unbekannte Artikel: " & (lngRow - 2) - Gedruckt & vbLf _
        & " Unbekannte Artikelnummern:" & vbLf & vbLf & strMissing, _
        vbInformation + vbOKOnly, "Info")
    
End Sub

Gruß Sepp
Anzeige
AW: Variablen in Array speichern und in MsgBox ausgebe
18.01.2007 17:53:15
Timo
Erstmal danke - jedoch wird bei jedem Aufruf von "if InStr" die fehlende Nummer eingetragen, wenn ein falsches Blatt ausgewählt ist - ich habe etwa 20x jeden Artikel als fehlend in strMissing stehen - läßt sich das auf einmal beschränken?
Gruß aus dem stürmischen Norden
Timo
AW: Variablen in Array speichern und in MsgBox ausgebe
18.01.2007 20:00:12
Josef
Hallo Timo,
ungetestet.
Private Sub FindSheets()
    Dim ArtNr As Variant
    Dim MySheet As Worksheet
    Dim lngRow As Long, lngC As Long
    Dim Gedruckt As Integer, intIndex As Integer
    Dim strMissing As String
    
    lngRow = Sheets("0000-START").Cells(Rows.Count, 1).End(xlUp).Row
    
    For lngC = 2 To lngRow
        ArtNr = Worksheets("0000-START").Cells(lngC, 1)
        If ArtNr = "" Then Exit Sub
        For Each MySheet In ActiveWorkbook.Worksheets
            If InStr(1, MySheet.Name, ArtNr) > 0 Then
                MySheet.PrintOut
                Gedruckt = Gedruckt + 1
                Exit For
            Else
                If intIndex = 0 Then
                    Redim vTmp(0) As Variant
                    vTmp(0) = ArtNr
                    intIndex = intIndex + 1
                Else
                    If IsError(Application.Match(ArtNr, vTmp, 0)) Then
                        Redim Preserve vTmp(intIndex)
                        vTmp(intIndex) = ArtNr
                        intIndex = intIndex + 1
                    End If
                End If
            End If
        Next
    Next
    
    If intIndex > 0 Then strMissing = Join(vTmp, vbLf)
    
    MsgTmp = MsgBox(" Artikel insgesamt: " & lngRow - 2 & vbLf _
        & " davon gedruckt: " & Gedruckt & vbLf _
        & " Unbekannte Artikel: " & (lngRow - 2) - Gedruckt & vbLf _
        & " Unbekannte Artikelnummern:" & vbLf & vbLf & strMissing, _
        vbInformation + vbOKOnly, "Info")
    
End Sub

Gruß Sepp
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge