Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1812to1816
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

Listbox
16.02.2021 11:35:40
Manuel
Hallo zusammen,
ich benutze diesen Code:
Private Sub CommandButton1_Click()
Dim last As Integer, i As Integer
Dim strOUT As String
Dim wks2 As Worksheet
Application.ScreenUpdating = False
Set wks2 = Worksheets("Schaden")
Worksheets("Schaden").Activate
wks2.Unprotect "2510"
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveSheet.Cells(last, 1).Value = UserForm1.Headset.Value
ActiveSheet.Cells(last, 2).Value = UserForm1.Seriennummer.Value
ActiveSheet.Cells(last, 3).Value = UserForm1.Perso.Value
ActiveSheet.Cells(last, 4).Value = UserForm1.Datum.Value
ActiveSheet.Cells(last, 5).Value = UserForm1.Schaden.Value
ActiveSheet.Cells(last, 7).Value = UserForm1.zuWAMAS.Value
ActiveSheet.Cells(last, 15).Value = UserForm1.User.Value
With UserForm1.Maßnahmen
For i = 0 To .ListCount - 1
If .Selected(i) Then
strOUT = strOUT & ", " & .List(i)
End If
Next i
End With
ActiveSheet.Cells(last, 6).Value = Mid(strOUT, 3)
wks2.Protect "2510"
Worksheets("Zettel").Activate
ActiveSheet.Range("b6").Value = Mid(strOUT, 3)
ActiveSheet.Range("b3").Value = UserForm1.Headset.Value
ActiveSheet.Range("b4").Value = UserForm1.Seriennummer.Value
ActiveSheet.Range("b9").Value = UserForm1.zuWAMAS.Value
ActiveSheet.Range("b5").Value = UserForm1.Schaden.Value
ActiveSheet.Range("b8").Value = UserForm1.User.Value
Sheets("Zettel").Visible = True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("Zettel").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("Grundliste").Select
Range("B7").Select
Application.ScreenUpdating = True
End Sub

Private Sub UserForm_Initialize()
Dim lZeile As Long, i As Long
'Worksheets("Dropdown").Activate
Schaden.RowSource = "Dropdown!E2:E8"
'Style der auswahl
Schaden.ListStyle = fmListStyleOption
Maßnahmen.RowSource = "Dropdown!F2:F7"
Headsetzurueck.RowSource = "Dropdown!B2:B3"
'TextBox3.RowSource = "Grundliste!n2:n5000"
TextBox4.RowSource = "Dropdown!c2:c9"
TextBox5.RowSource = "Dropdown!h2:h33"
TextBox6.RowSource = "Dropdown!i2:i20"
TextBox7.RowSource = "Dropdown!j2:j36"
TextBox8.RowSource = "Dropdown!d2:d3"
TextBox9.RowSource = "Dropdown!B2:B3"
TextBox10.RowSource = "Reserve!A2:A500" 'hh
TextBox16.RowSource = "Dropdown!d2:d3"
TextBox17.RowSource = "Dropdown!a1:a3"
'Worksheets("Grundliste").Activate
Seriennummer.RowSource = "Grundliste!A2:K" & Worksheets("Grundliste").Cells(Rows.Count, "J"). _
End(xlUp).Row
Perso.RowSource = "Grundliste!A2:K" & Worksheets("Grundliste").Cells(Rows.Count, "A").End(xlUp). _
Row
'UserForm1.Headset.RowSource = "Grundliste!K2:K9999"
User.Value = Application.UserName
Datum.Value = Now
vonWAMAS.Value = Now
ListBox1.BoundColumn = 2
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "0;50"
'Eintrag Datum und Text für die ANSICHT von Tabelle3 FERTIGNEU
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
'TextBox12 = ""
TextBox13 = ""
TextBox14 = ""
TextBox15 = ""
TextBox16 = ""
TextBox17 = ""
TextBox18 = User.Value
TextBox19 = User.Value
ListBox1.Clear
Call Listbox1fuellen  'aufruf der Subroutine
ListBox1.ListIndex = IIf(ListBox1.ListCount > 1, 0, -1)
End Sub
Jetzt möchte ich gerne das bei der Listbox Schaden ein MUSS ausgewählt wird. Das heißt, wähle ich keins aus, muss eine Meldung kommen " Eine Auswahl ist Pflicht" dann geht es erst weiter zum speicher.
Kann mir jemand helfen das einzubauen ?
Danke

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox
16.02.2021 11:53:28
Werner
Hallo,
so wie ich das sehe, kannst du doch prüfen, ob deine String-Variable strOUT einen Wert enthält oder nicht.
Private Sub CommandButton1_Click()
Dim last As Integer, i As Integer, strOUT As String
Dim wks2 As Worksheet
Application.ScreenUpdating = False
With Me.Maßnahmen
For i = 0 To .ListCount - 1
If .Selected(i) Then
strOUT = strOUT & ", " & .List(i)
End If
Next i
End With
If Not strOUT = vbNullString Then
With Worksheets("Schaden")
.Unprotect "2510"
last = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(last, 1).Value = Me.Headset.Value
.Cells(last, 2).Value = Me.Seriennummer.Value
.Cells(last, 3).Value = Me.Perso.Value
.Cells(last, 4).Value = Me.Datum.Value
.Cells(last, 5).Value = Me.Schaden.Value
.Cells(last, 7).Value = Me.zuWAMAS.Value
.Cells(last, 15).Value = Me.User.Value
.Cells(last, 6).Value = Mid(strOUT, 3)
.Protect "2510"
End With
With Worksheets("Zettel")
.Range("b6").Value = Mid(strOUT, 3)
.Range("b3").Value = Me.Headset.Value
.Range("b4").Value = Me.Seriennummer.Value
.Range("b9").Value = Me.zuWAMAS.Value
.Range("b5").Value = Me.Schaden.Value
.Range("b8").Value = Me.User.Value
.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
End With
Else
MsgBox "Fehler: Bitte bei Maßnahmen einen Wert auswählen."
End If
End Sub

Und den ständigen Blattwechsel solltest du auch unterlassen.
Gruß Werner
Anzeige
AW: Listbox
16.02.2021 11:57:07
Manuel
HAllo,
danke, aber es geht leider auch ohne eine Auswahl. JETZT möchte ich, das unbedingt eine Auswahl statt findet.
Den Blattwechsel brauche ich für das Protokoll ( Blatt: Schaden ) und einmal das ein Zettel gedruckt wird.
AW: Listbox
16.02.2021 11:57:26
ralf_b
schreib das vor Application.ScreenUpdating = False ins commandbutton_click
if Schaden = "" then msgbox( "Meldung Schaden darf nicht leer sein" :  exit sub 

AW: Listbox
16.02.2021 12:02:16
Manuel
Hallo Ralf,
habe ich gemacht, die Meldung kommt, aber danach kann ich kein Speichern mehr klicken, da passiert nichts.
Private Sub CommandButton1_Click()
Dim last As Integer, i As Integer
Dim strOUT As String
Dim wks2 As Worksheet
If Schaden = "" Then MsgBox ("Meldung Schaden darf nicht leer sein")
Exit Sub
Application.ScreenUpdating = False
Set wks2 = Worksheets("Protokoll")
Worksheets("Protokoll").Activate
wks2.Unprotect "2510"
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveSheet.Cells(last, 1).Value = UserForm1.Headset.Value
ActiveSheet.Cells(last, 2).Value = UserForm1.Seriennummer.Value
ActiveSheet.Cells(last, 3).Value = UserForm1.Perso.Value
ActiveSheet.Cells(last, 4).Value = UserForm1.Datum.Value
ActiveSheet.Cells(last, 5).Value = UserForm1.Schaden.Value
ActiveSheet.Cells(last, 7).Value = UserForm1.zuWAMAS.Value
ActiveSheet.Cells(last, 15).Value = UserForm1.User.Value
With UserForm1.Maßnahmen
For i = 0 To .ListCount - 1
If .Selected(i) Then
strOUT = strOUT & ", " & .List(i)
End If
Next i
End With
ActiveSheet.Cells(last, 6).Value = Mid(strOUT, 3)
wks2.Protect "2510"
Worksheets("Zettel").Activate
ActiveSheet.Range("b6").Value = Mid(strOUT, 3)
ActiveSheet.Range("b3").Value = UserForm1.Headset.Value
ActiveSheet.Range("b4").Value = UserForm1.Seriennummer.Value
ActiveSheet.Range("b9").Value = UserForm1.zuWAMAS.Value
ActiveSheet.Range("b5").Value = UserForm1.Schaden.Value
ActiveSheet.Range("b8").Value = UserForm1.User.Value
Sheets("Zettel").Visible = True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("Zettel").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("Grundliste").Select
Range("B7").Select
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Listbox
16.02.2021 12:18:07
ralf_b
du hast es nicht ganz so geschrieben wie ich es vorgegeben habe.
": exit sub " kommt auf die selbe Zeile wir die if abfrage
AW: Listbox
16.02.2021 12:30:05
Manuel
Hey,
kommt leider beim Doppelpunkt ein Fehler:
Private Sub CommandButton1_Click()
Dim last As Integer, i As Integer
Dim strOUT As String
Dim wks2 As Worksheet
if Schaden = "" then msgbox( "Meldung Schaden darf nicht leer sein" :  exit sub
Application.ScreenUpdating = False
Set wks2 = Worksheets("Protokoll")
Worksheets("Protokoll").Activate
wks2.Unprotect "2510"
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveSheet.Cells(last, 1).Value = UserForm1.Headset.Value
ActiveSheet.Cells(last, 2).Value = UserForm1.Seriennummer.Value
ActiveSheet.Cells(last, 3).Value = UserForm1.Perso.Value
ActiveSheet.Cells(last, 4).Value = UserForm1.Datum.Value
ActiveSheet.Cells(last, 5).Value = UserForm1.Schaden.Value
ActiveSheet.Cells(last, 7).Value = UserForm1.zuWAMAS.Value
ActiveSheet.Cells(last, 15).Value = UserForm1.User.Value
With UserForm1.Maßnahmen
For i = 0 To .ListCount - 1
If .Selected(i) Then
strOUT = strOUT & ", " & .List(i)
End If
Next i
End With
ActiveSheet.Cells(last, 6).Value = Mid(strOUT, 3)
wks2.Protect "2510"
Worksheets("Zettel").Activate
ActiveSheet.Range("b6").Value = Mid(strOUT, 3)
ActiveSheet.Range("b3").Value = UserForm1.Headset.Value
ActiveSheet.Range("b4").Value = UserForm1.Seriennummer.Value
ActiveSheet.Range("b9").Value = UserForm1.zuWAMAS.Value
ActiveSheet.Range("b5").Value = UserForm1.Schaden.Value
ActiveSheet.Range("b8").Value = UserForm1.User.Value
Sheets("Zettel").Visible = True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("Zettel").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("Grundliste").Select
Range("B7").Select
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Listbox
16.02.2021 12:32:30
ralf_b
ok, vor dem Doppelpunkt fehlt noch die schliessende Klammer für die msgbox.
AW: Listbox
16.02.2021 12:48:28
Manuel
Hallo Ralf,
irgendwie ging das jetzt und jetzt nimmer. Ich teste mal weiter.
Danke Dir
AW: Listbox
16.02.2021 13:08:06
ralf_b
mit "irgendwie" kann ich nichts anfangen.
AW: Listbox
16.02.2021 13:16:52
Manuel
Hallo Ralf,
mein Code, aber er geht trotz nicht Auswahl auf speichern,
leider kann ich die Datei in der Arbeit nicht hochladen:
Private Sub CommandButton1_Click()
Dim last As Integer, i As Integer
Dim strOUT As String
Dim wks2 As Worksheet
If Schaden = "" Then MsgBox ("Meldung Schaden darf nicht leer sein"):   Exit Sub
Application.ScreenUpdating = False
Set wks2 = Worksheets("Protokoll")
Worksheets("Protokoll").Activate
wks2.Unprotect "2510"
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveSheet.Cells(last, 1).Value = UserForm1.Headset.Value
ActiveSheet.Cells(last, 2).Value = UserForm1.Seriennummer.Value
ActiveSheet.Cells(last, 3).Value = UserForm1.Perso.Value
ActiveSheet.Cells(last, 4).Value = UserForm1.Datum.Value
ActiveSheet.Cells(last, 5).Value = UserForm1.Schaden.Value
ActiveSheet.Cells(last, 7).Value = UserForm1.zuWAMAS.Value
ActiveSheet.Cells(last, 15).Value = UserForm1.User.Value
With UserForm1.Maßnahmen
For i = 0 To .ListCount - 1
If .Selected(i) Then
strOUT = strOUT & ", " & .List(i)
End If
Next i
End With
ActiveSheet.Cells(last, 6).Value = Mid(strOUT, 3)
wks2.Protect "2510"
Worksheets("Zettel").Activate
ActiveSheet.Range("b6").Value = Mid(strOUT, 3)
ActiveSheet.Range("b3").Value = UserForm1.Headset.Value
ActiveSheet.Range("b4").Value = UserForm1.Seriennummer.Value
ActiveSheet.Range("b9").Value = UserForm1.zuWAMAS.Value
ActiveSheet.Range("b5").Value = UserForm1.Schaden.Value
ActiveSheet.Range("b8").Value = UserForm1.User.Value
Sheets("Zettel").Visible = True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("Zettel").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("Grundliste").Select
Range("B7").Select
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Listbox
16.02.2021 14:24:13
ralf
achso, Moment die Listbox heißt nicht "Schaden" sondern "ListBox1".
Also diese bezeichnungen austauschen, dann aber.
AW: Listbox
16.02.2021 14:44:12
Manuel
Hallo Ralf :-)
Wahnsinn :-) geht leider auch nicht,
ich habe die Datei so geändert, dass vom Datenschutz nichts passiert. Heute Abend lade ich sie mach hoch.
Danke Dir :-)
AW: Listbox Datei
16.02.2021 20:02:12
Werner
Hallo,
ich habe dir schon geschrieben, dass du besser auf das ständige Aktivieren/Selectieren der Blätter verzichten solltest. Das ist unnötig und macht den Code nur langsam.
Besser die Blätter direkt und korrekt zu Referenzieren.
In deinem Code jetzt mit With ....
Hierbei wird dann auf das im With angegebene Blatt referenziert, indem vor jedem Range-Objekt ein Punkt gesetzt wird.
Im Code kannst du dir die ständige Eingabe von Userform1 sparen. Könnte man eigentlich ganz weglassen, dann bezieht sich das immer auf die Userform, in der sich das Steuerelement befindet.
Oder du verwendest Me - spart zumindest einiges an Schreibarbeit.
Das wieder einschalten von Screenupdating am Ende des Codes ist nicht notwendig, das macht Excel automatisch.
Private Sub CommandButton1_Click()
Dim last As Integer, i As Integer, strOUT As String
Dim wks2 As Worksheet
If Me.Schaden.ListIndex > -1 Then
Application.ScreenUpdating = False
Set wks2 = Worksheets("Protokoll")
With Worksheets("Protokoll")
.Unprotect "2510"
last = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(last, 1).Value = Me.Headset.Value
.Cells(last, 2).Value = Me.Seriennummer.Value
.Cells(last, 3).Value = Me.Perso.Value
.Cells(last, 4).Value = Me.Datum.Value
.Cells(last, 5).Value = Me.Schaden.Value
.Cells(last, 7).Value = Me.zuWAMAS.Value
.Cells(last, 15).Value = Me.User.Value
With Me.Maßnahmen
For i = 0 To .ListCount - 1
If .Selected(i) Then
strOUT = strOUT & ", " & .List(i)
End If
Next i
End With
.Cells(last, 6).Value = Mid(strOUT, 3)
.Protect "2510"
With Worksheets("Zettel")
.Range("b6").Value = Mid(strOUT, 3)
.Range("b3").Value = Me.Headset.Value
.Range("b4").Value = Me.Seriennummer.Value
.Range("b9").Value = Me.zuWAMAS.Value
.Range("b5").Value = Me.Schaden.Value
.Range("b8").Value = Me.User.Value
.Visible = True
.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
.Visible = False
End With
Sheets("Grundliste").Select
Range("B7").Select
End With
Else
MsgBox "Fehler: Es ist kein Schaden ausgewählt."
End If
End Sub
Gruß Werner
Anzeige
AW: Listbox Datei
17.02.2021 06:57:17
Manuel
super Danke für alles.
LG Manuel
Gerne u. Danke für die Rückmeldung. o.w.T.
17.02.2021 08:25:46
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige