Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1680to1684
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 vorauswählen

Listbox vorauswählen
29.03.2019 07:53:29
Curly
Guten Morgen,
ich versuche aktuell eine Userform mit Werten bereits beim öffnen vor auszuwählen.
Hierfür schaue ich mir an , wer die Datei öffnet und setzte hierfür Public Variable.
Private Sub Workbook_Open()
Dim aktUser As String
aktUser = UCase(Environ("UserName"))
Call Userauswahl(aktUser)
End Sub
Danach schreibe ich in einem Modul:
Option Explicit
Public User As String
Public p_ListBox1 As Byte
Public p_ListBox2 As Byte
Sub Userauswahl(User)
Select Case User
Case "Curly":
p_ListBox1 = 1
p_ListBox2 = 0
Case Else
p_ListBox1 = 0
p_ListBox2 = 0
End Select
End Sub und das versuche ich dann in der UF zu übernehmen:
Private Sub UserForm_Activate()
With Me.ListBox1
.Clear '*** löschen, falls schon was drinsteht ***
.AddItem "A"
.AddItem "B"
.AddItem "C"
.Selected(p_ListBox1) = True
End With
With Me.ListBox2
.Clear '*** löschen, falls schon was drinsteht ***
.AddItem "11"
.AddItem "22"
.Selected(p_ListBox2) = True
End With
If p_ListBox1 = 0 And p_ListBox2 = 0 Then
With Me.ListBox3
.Clear '*** löschen, falls schon was drinsteht ***
.AddItem "aa"
.AddItem "bb"
.AddItem "cc"
End With
End If
If p_ListBox1 = 0 And p_ListBox2 = 1 Then
With Me.ListBox3
.Clear '*** löschen, falls schon was drinsteht ***
.AddItem "dd"
.AddItem "ee"
.AddItem "ff"
End With
End If
If p_ListBox1 = 1 And p_ListBox2 = 0 Then
With Me.ListBox3
.Clear '*** löschen, falls schon was drinsteht ***
.AddItem "gg"
.AddItem "hh"
.AddItem "ii"
.AddItem "jj"
End With
End If
If p_ListBox1 = 2 And p_ListBox2 = 0 Then
With Me.ListBox3
.Clear '*** löschen, falls schon was drinsteht ***
.AddItem "kk"
.AddItem "ll"
.AddItem "mm"
End With
End If
End Sub
Wenn ich dann aus der UF das Sub Speichern aufrufe:
Übernimmt er nur die Listbox1 und Listbox3(wird per Hand angeklickt!),
die Listbox2 ist leer.
Kann mir vielleicht jemand helfen?
Danke Curly

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox vorauswählen
29.03.2019 08:31:43
Nepumuk
Hallo Curly,
wie sieht denn das Makro 'Speichern' aus?
Gruß
Nepumuk
AW: Listbox vorauswählen
29.03.2019 08:35:13
Curly
Hi Nepumuk,
Sub speichern(liBox1 As String, liBox2 As String, liBox3 As String)
Dim AnfangsPfad As String
usw....
End Sub

AW: Listbox vorauswählen
29.03.2019 08:39:51
Nepumuk
Hallo Curly,
soll ich mir den restlichen Code denken? Und warum übergibst du die Listeboxen nicht als Listboxen? Ist doch viel einfacher im Zugriff.
Gruß
Nepumuk
AW: Listbox vorauswählen
29.03.2019 08:55:03
Curly
Das speichern usw. funktioniert ja alles, er übergibt mir nur was welchem Grund auch immer nicht die liBox2.
Wie kann man die Listboxen als Listboxen übergeben?
das ist das speichermodul
Sub speichern(liBox1 As String, liBox2 As String, liBox3 As String)
Dim Zwischenordner As String
Dim Ordner_Sparte As String
Dim AnfangsPfad As String
'Fehlermeldung ausschalten
Application.DisplayAlerts = False
If liBox1 = "A" Then
Zwischenordner = "XX\"
ElseIf liBox1 = "B" Then
Zwischenordner = "XX\YY\"
Else
Zwischenordner = ""
End If
If liBox2 = "11" Then
Ordner_Sparte = "ZZ"
Else
Ordner_Sparte = "UU"
End If
AnfangsPfad = "\\PFAD\" & liBox1 & "\Test\" & Zwischenordner
ActiveWorkbook.SaveAs Filename:= _
AnfangsPfad & "\" & Ordner_Sparte & "\Bearbeiten" & Format(Date, "YYYY.MM.DD") & ".xlsb" _
_
, FileFormat:=xlExcel12, CreateBackup:=False
Application.DisplayAlerts = True
End Sub
das wäre das ganze Sub
Für jeden Verbesserungsvorschlag bin ich sehr dankbar :-)
Gruß Curly
Anzeige
AW: Listbox vorauswählen
29.03.2019 09:02:05
Nepumuk
Hallo Curly,
ok, an dieser Prozedur kann es nicht liegen. Wie sieht denn die Prozedur aus welche 'speichern' aufruft?
Gruß
Nepumuk
AW: Listbox vorauswählen
29.03.2019 09:05:40
Curly

Private Sub cmdSpeichern_Click()
If ListBox1.ListIndex = -1 Or ListBox2.ListIndex = -1 Or ListBox3.ListIndex = -1 Then
MsgBox "Bitte überall einen Wert auswählen"
Exit Sub
End If
speichern ListBox1, ListBox2, ListBox3
Me.Hide
End Sub

AW: Listbox vorauswählen
29.03.2019 09:20:27
Nepumuk
Hallo Curly,
versuch es mal so:
Call speichern(ListBox1.Text, ListBox2.Text, ListBox3.Text)

Gruß
Nepumuk
Anzeige
AW: Listbox vorauswählen
29.03.2019 09:26:55
Curly
Vielen Dank.
Das war anscheint die Lösung in Zusammenhang mit ListIndex.
Vorhin meintest du warum ich nicht gleich die Listbox übergebe, hast du einen Tipp wie ich meinen Code verbessern kann?
Vielen Dank Nepumuk, schön das es noch Leute gibt die anderen helfen.
AW: Listbox vorauswählen
29.03.2019 09:31:08
Nepumuk
Hallo Curly,
nee, ist schon ok so. Du wertest ja "nur" den ausgewählten Wert aus.
Und merke für die Zukunft: Verlass dich niemals auf Default-Propertys, programmiere immer sauber.
Gruß
Nepumuk
AW: Listbox vorauswählen
29.03.2019 09:32:32
Curly
anscheint zu früh gefreut, nachdem ich die Datei geschlossen habe und wieder geöffnet , übergibt er nun wieder nicht mehr den ListBox2 Wert..
ich verzweifle noch .... :-(
Anzeige
AW: Listbox vorauswählen
29.03.2019 09:34:45
Nepumuk
Hallo Curly,
das kann ich ohne eine Beispielmappe nicht nachvollziehen.
Gruß
Nepumuk
AW: Listbox vorauswählen
29.03.2019 09:37:45
Curly
ich habe jetzt mal eine MsgBox davor gebaut, dann übernimmt er meinen Wert immer , ohne MsgBox macht er das komischerweise nicht.
Kann es sein das er die public Variable p_ListBox1 nicht ohne MsgBox übergeben bekommt?
AW: Listbox vorauswählen
29.03.2019 09:46:05
Nepumuk
Hallo Curly,
kann ich mir nicht vorstellen. aber deklariere die Variablen:
Public p_ListBox1 As Byte
Public p_ListBox2 As Byte

As Long und nicht As Byte. Das ist kontraproduktiv da die ListBox einen Long-Wert erwartet und dein Byte erst mal konvertiert werden muss.
Gruß
Nepumuk
Anzeige
AW: Listbox vorauswählen
29.03.2019 10:15:16
Curly
In welchem Dateiformat kann ich es speichern, da xlsm ja in der Regel nicht gewünscht ist.
AW: Listbox vorauswählen
29.03.2019 10:26:02
Nepumuk
Hallo Curly,
willst du mit oder ohne Makros speichern? Wenn mit Makros dann musst du als .xlsm, .xlsb oder .xls speichern.
Gruß
Nepumuk
AW: Listbox vorauswählen
29.03.2019 11:05:21
Nepumuk
Hallo Curly,
irgendwas ist an der Listbox2 kaputt. Nachdem ich sie gelöscht und durch eine neue ersetzt habe funktioniert es einwandfrei.
Ein paar Änderungen habe ich noch vorgenommen:
Private Sub Workbook_Open()
    Call Userauswahl(UCase$(Environ$("USERNAME")))
End Sub

Option Explicit
Option Private Module

Public p_ListBox1 As Long
Public p_ListBox2 As Long

Public Sub Userauswahl(UserName As String)
    Select Case UserName
        Case ("CURLY")
            p_ListBox1 = 1
            p_ListBox2 = 0
        Case Else
            p_ListBox1 = 0
            p_ListBox2 = 0
    End Select
End Sub

Public Sub CallUF()
    UserForm1.Show
End Sub

Public Sub speichern(liBox1 As String, liBox2 As String, liBox3 As String)
MsgBox liBox1
MsgBox liBox2
MsgBox liBox3

Private Sub CommandButton1_Click()
    If ListBox1.ListIndex = -1 Or ListBox2.ListIndex = -1 Or ListBox3.ListIndex = -1 Then
        MsgBox "Bitte überall einen Wert auswählen"
    Else
        Call speichern(ListBox1.Text, ListBox2.Text, ListBox3.Text)
        Hide
    End If
End Sub

Private Sub CommandButton2_Click()
    Hide
End Sub

Private Sub UserForm_Activate()
With ListBox1
    .Clear '*** löschen, falls schon was drinsteht ***
    .AddItem "A"
    .AddItem "B"
    .AddItem "C"
    .ListIndex = p_ListBox1
End With
With ListBox2
    .Clear '*** löschen, falls schon was drinsteht ***
    .AddItem "11"
    .AddItem "22"
    .ListIndex = p_ListBox2
End With

Gruß
Nepumuk
Anzeige
AW: Listbox vorauswählen
29.03.2019 11:24:26
Curly
Vielen Dank,
Ich habe jetzt auch die Listbox2 mal neu eingefügt, ich hoffe das hilft. :-)
was ist hier den der unterschied von $ in Call Userauswahl(UCase$(Environ$("USERNAME")))?
AW: Listbox vorauswählen
29.03.2019 11:56:25
Nepumuk
Hallo Curly,
z.B. Funktion UCase gibt einen Variant - Untertype String zurück. UCase$ gibt einen String zurück. Ein Variant-Datentyp braucht mehr Speicher und ist daher langsamer. Zudem erwartest du ja einen String, daher ist es logisch die entsprechende Funktion zu benutzen.
Gruß
Nepumuk
AW: Listbox vorauswählen
29.03.2019 08:41:32
fcs
Hallo Curly,
die Eigenschaft
.Selected(itemNr)
funktioniert nur bei Listboxen mit Mehrfachauswahl.
Bei "einfachen" Listboxen muss man die Eigenschaft ListIndex setzen.
.ListIndex = itemNr
Leider ist meine Erfahrung hier auch nicht immer positiv, was die korrekte Übernahme der Eigenschaft angeht.
LG
Franz
Anzeige
AW: Listbox vorauswählen
29.03.2019 08:57:46
Curly
Danke für den Hinweis das Seleced nur für Mehrfach Auswahl gedacht ist, allerdings funktioniert es leider auch nicht mit ListIndex.
Die Listbox2 hat bei der Übergabe keinen Wert, obwohl der Wert in der UF blau hinterlegt ist.
AW: Listbox vorauswählen
29.03.2019 10:02:11
EtoPHG
Hallo Curly,
Deine Codekonstrukte sind mehr als verwirrend.
Deine Fehlerbeschreibungen ebenso.
Mit einer Beispielmappe von Beginn weg, hättest du vermutlich schon in der ersten Antwort eine funktionierende Lösung bekommen. Warum also lädst du keine hoch?
Den zuerst geposteten Code mal bereinigt:
'---------------------------
' Klasse: DieserArbeitsmappe
Option Explicit
Private Sub Workbook_Open()
UserAuswahl UCase(Environ("UserName"))
End Sub
'Klasse: StandardModul
Option Explicit
Public p_ListBox1 As Long
Public p_ListBox2 As Long
Sub UserAuswahl(userName As String)
Select Case userName
Case UCase("Curly")
p_ListBox1 = 1
p_ListBox2 = 0
Case Else
p_ListBox1 = 0
p_ListBox2 = 0
End Select
End Sub
Gruess Hansueli
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige