Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1224to1228
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

Listbox Multiselect "Drucken"-Schleife je nach Aus

Listbox Multiselect "Drucken"-Schleife je nach Aus
Lars
Hallo Liebe Excelgemeinde,
ich benötige nochmal von Euch Hilfe. Ich habe eine Listbox mit 13 Spalten, in welcher welcher per Multiselect-Auswahl einzelne, oder mehrere Datensätze ausgewählt werden können. Die dafür erforderlichen Daten befinden sich in einem Tabellenblatt "Daten" der Arbeitsmappe. Das klappt soweit gut.
Nun sollen bei Auswahl in der Listbox, ein paar Werte der ausgewählten Daten in anderen Tabellenblätter übertragen werden (Protokolle) und automatisch ausgedruckt werden. Die unterschiedlichen Protokolle existieren auch schon in meiner Mappe. Mir gelingt auch der Übertrag der Daten in die unterschiedlichen Protokollblätter. Das Prüfkriterium (welches Protokoll ausgewählt werden soll) ist der Wert der 6. Spalte meiner Daten im Tabellenblatt. Je nach Begriff (in meinem Fall ist es der "Tortyp"), soll das richtige Protokollblatt angesprochen werden.
Mein Problem ist nun, dass ich nur eine Protokollblatt ausgedruckt bekomme - und zwar ist es immer nur das zuletzt in der Listbox mit Häkchen versehene.
Mir ist aufgefallen, dass die anderen ausgewählten Daten auch - je nach Typ - in die richtigen Protokolle übertragen werden - hiefür erfolgt aber kein Ausdruck Sad
anbei mal mein Code... ich hoffe, er ist einigermaßen nachvollziehbar?
was mache ich falsch?....
Code:
Private Sub CommandButton6_Click()
Dim i As Long, intZ As Integer, durchsuchen, finden As Range
Dim x&
With ListBox1
For x = .ListCount - 1 To 0 Step -1 'die Schleife unbedingt rücwärts laufen lassen!
If .Selected(x) = True Then
'MsgBox .List(x, 5) & " in Tabelle suchen und löschen" '*** DEMO Zeile ***
'hier jetzt in Tabelle löschen
Set durchsuchen = Sheets("Daten").Range("B8:L" & Sheets("Daten").Range("B65536"). _
End(xlUp).Row)
For Each finden In durchsuchen
If finden.Text = .List(x, 5) Then     'Textvergleich der Tabelle mit Listbox  _
Zeile(x) aus Spalte5!
'If finden.Text = TextBox6.Text Then   !Das ist falsch! Du darfst nicht mit der  _
Textbox vergleichen
intZ = finden.Row                  'Zeile ermitteln
'Rows(intZ).Interior.ColorIndex = 6 '*** DEMO Zeile ***
MsgBox "Die Protokolle der ausgewählten Daten: Auftr. [" & .List(x, 5) & "]  _
werden jetzt gedruckt!", vbInformation, "Auftr. " & .List(x, 5) 'DEMO Zeile kann gelöscht werden
Cells(intZ, 7).EntireRow.Select    'Zeile in Tabelle auswählen
' **************************************** Prüfung auf Tortyp ********************************** _
If Cells(intZ, 6).Text = "Sektionaltor Antrieb" Then
Sheets("Sektionaltor Motor").Select
Range("C3").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 3).Value 'Firma/Kd./Betreiber
Range("C5").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 9).Value 'Standort
Range("C7").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 8).Value 'Baujahr
Range("C9").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 10).Value 'Torgröße
Range("K7").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 7).Value 'Auftr.Nr.
Range("X4").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 11).Value 'Steuerung
Range("S7").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 4).Value 'Tornummer
Sheets("Sektionaltor Motor").Activate
ActiveSheet.PrintOut From:=1, To:=1, Copies:=1
End If
'*********************************************************************************************** _
If Cells(intZ, 6).Text = "Sektionaltor Hand" Then
Sheets("Sektionaltor Hand").Select
Range("C3").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 3).Value 'Firma/Kd./Betreiber
Range("C5").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 9).Value 'Standort
Range("C7").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 8).Value 'Baujahr
Range("C9").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 10).Value 'Torgröße
Range("K7").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 7).Value 'Auftr.Nr.
Range("X4").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 11).Value 'Steuerung
Range("S7").Select
ActiveCell.Value = Sheets("Daten").Cells(intZ, 4).Value 'Tornummer
Sheets("Sektionaltor Hand").Activate
ActiveSheet.PrintOut From:=1, To:=1, Copies:=1
End If
' **************************************** Prüfung auf Tortyp Ende ***************************** _
Exit For
End If
Next finden
'jetzt das Häkchen in Listbox deaktivieren!
.Selected(x) = False
End If
Next
End With
ListBox1.ListIndex = ListBox1.ListIndex
End Sub

Hat jemand von Euch eine Idee, warum ich nur den untersten, mit Häkchen versehenen Listboxeintrag ausgedruckt bekomme, obwohl für die andren ausgewählten Daten der Übertrag in die Protokolle schon funktioniert?
Würde mich über Eure Hilfe freuen.
Gruß
Lars

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Listbox Multiselect "Drucken"-Schleife je nach Aus
12.08.2011 06:30:20
Oberschlumpf
Hi Lars
Bei VBA = gut weißt du sicherlich, was es für ne Anfangs-Arbeit macht, eine Datei erst mal zu designen, bevor man selbiger mit VBA-Code und/oder Formeln Leben einhauchen kann.
Deswegen verstehe ich nicht, warum du uns deine Datei nachbauen lässt, bevor wir beginnen können, eine Lösung für dich zu erarbeiten.
Es mag vllt Leute geben, die sich "theoretisch" durch deinen vielen und leider unübersichtlichen Code "hangeln". Aber definitiv einfacher wäre es doch, wenn du uns die Datei zeigst - wenn Datei zu groß, dann mach davon doch ne Kopie, lösch alles andere und lass nur das drin, was zum Verstehen deines Problems wichtig ist.
Ciao
Thorsten
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige