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

UserForm und Listbox

UserForm und Listbox
14.10.2005 09:19:03
Gerhard
Guten Morgen!
Habe leider nosch zwei kleine Probleme mit meinen VBA Geschichten.
Die UserForm bleibt immer am Bildschirm auch wenn ich eine andere Excel Datei öffne. Ich möchte gerne dass die Userform an das Exce Workbook gebunden ist mit in dem ich sie öffne und wenn ich diese Datei minimiere das damit auch die Userform verschwinden. Oder kann man die UserForm minimieren? Momentan habe ich nur das Kreuz für Schliessen.
Mein zweites Problem ist dass ich mir in einer ListBox den Inhalt (Excel Dateien) eines Ordners anzeigen lasse und sie zur weiteren Verwendung öffnen kann. Nun kann es vorkommen dass in den Ordner momentan keine Dateien enthalten sind. VBA produziert dann einen Fehler dass es die Listbox Eigenschaften nicht setzen kann. Ich möchte gerne dass die ListBox dann einfach ohne Inhalt dargestellt wird. Ist das möglich? Der Code ist unten angehängt.
Bitte um Hilfe
Gerhard

Private Sub comEinlesen_Click()
'Initiation der Steuerung
Dim strNameSteuerung As String
strNameSteuerung = Workbooks("SteuerungKunst.xls").Sheets("INI").[A1] '!§§§   ändern bei anderer Steuerung   §§§!
Dim strLaufwerk As String
Dim strPfadGeliefertS As String
Dim strPfadGeliefertWRL As String
Dim strPfadMonBes As String
Dim strPfadArchivM As String
Dim strPfadArchivG As String
strLaufwerk = Workbooks(strNameSteuerung).Sheets("INI").[B3]
strPfadGeliefertS = Workbooks(strNameSteuerung).Sheets("INI").[B4]
strPfadGeliefertWRL = Workbooks(strNameSteuerung).Sheets("INI").[B6]
strPfadMonBes = Workbooks(strNameSteuerung).Sheets("INI").[B11]
strPfadArchivM = Workbooks(strNameSteuerung).Sheets("INI").[B10]
strPfadArchivG = Workbooks(strNameSteuerung).Sheets("INI").[B16]
Me.ListBox1.List = FileArray(strLaufwerk & strPfadGeliefertS, "*.*")
Me.ListBox2.List = FileArray(strLaufwerk & strPfadGeliefertWRL, "*.*")
Me.ListBox3.List = SubDirectories(strLaufwerk & strPfadMonBes & strPfadArchivM & strPfadArchivG)
'Eilesen über Textbox
'Me.ListBox1.List = FileArray(Me.TextBox1.Text, Me.TextBox2.Text)
'Me.ListBox2.List = FileArray(Me.TextBox3.Text, Me.TextBox4.Text)
'Me.ListBox3.List = SubDirectories(Me.TextBox5.Text, Me.TextBox6.Text)
End Sub


Private Sub UserForm_Initialize()
'Initialisierung der Steuerung
Dim strNameSteuerung As String
strNameSteuerung = Workbooks("SteuerungKunst.xls").Sheets("INI").[A1] '!§§§   ändern bei anderer Steuerung   §§§!
Dim strLaufwerk As String
Dim strPfadGeliefertS As String
Dim strPfadGeliefertWRL As String
Dim strPfadMonBes As String
Dim strPfadArchivM As String
Dim strPfadArchivG As String
strLaufwerk = Workbooks(strNameSteuerung).Sheets("INI").[B3]
strPfadGeliefertS = Workbooks(strNameSteuerung).Sheets("INI").[B4]
strPfadGeliefertWRL = Workbooks(strNameSteuerung).Sheets("INI").[B6]
strPfadMonBes = Workbooks(strNameSteuerung).Sheets("INI").[B11]
strPfadArchivM = Workbooks(strNameSteuerung).Sheets("INI").[B10]
strPfadArchivG = Workbooks(strNameSteuerung).Sheets("INI").[B16]
'Pfad anpassen !!!
Me.ListBox1.List = FileArray(strLaufwerk & strPfadGeliefertS, "*.*")
Me.ListBox2.List = FileArray(strLaufwerk & strPfadGeliefertWRL, "*.*")
Me.ListBox3.List = SubDirectories(strLaufwerk & strPfadMonBes & strPfadArchivM & strPfadArchivG)
End Sub

Function FileArray(strPath As String, strPattern As String)
Dim arrDateien()
Dim intCounter As Integer
Dim strDatei As String
Dim Übergabedatei As String
If Right(strPath, 1) "\" Then strPath = strPath & "\"
strDatei = Dir(strPath & strPattern)
Do While strDatei ""
intCounter = intCounter + 1
ReDim Preserve arrDateien(1 To intCounter)
arrDateien(intCounter) = strDatei
strDatei = Dir()
Loop
FileArray = arrDateien
End Function

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm und Listbox
14.10.2005 09:49:30
Matthias
Hallo Gerhard,
1.
verstecke die Userform im Workbook_Deactivate()-Ereignis.
2.
ändere die FileArray-Funktion leicht ab:

Function FileArray(strPath As String, strPattern As String)
Dim arrDateien()
Dim intCounter As Integer
Dim strDatei As String
Dim Übergabedatei As String
If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
strDatei = Dir(strPath & strPattern)
Do While strDatei <> ""
intCounter = intCounter + 1
ReDim Preserve arrDateien(1 To intCounter)
arrDateien(intCounter) = strDatei
strDatei = Dir()
Loop
If intCounter = 0 Then
ReDim Preserve arrDateien(0 To 0)
End If
FileArray = arrDateien
End Function

Gruß Matthias
Anzeige
AW: UserForm und Listbox
14.10.2005 10:29:53
Gerhard
Hallo Matthias!
Punkt 2 funktioniert perfekt! Herzlichen Dank!
Bei Punkt 1 kenn ich mich noch nicht ganz genau aus.
Ich lege in meinem Workbook (Diese Arbeitsmappe) den Code "Workbook_Deactivate()" an und schreibe dann als Ereignis was ? rein? Kannst Du mir das sagen.
Danke
Gerhard
AW: UserForm und Listbox
14.10.2005 10:56:16
Matthias
Hallo Gerhard,
das Userform ist doch nichtmodal, oder?
Wann wird es denn angezeigt? Immer, wenn die Mappe auch offen ist?

Private Sub Workbook_Activate()
UserForm1.Show False
End Sub
Private Sub Workbook_Deactivate()
UserForm1.Hide
End Sub

Gruß Matthias
Anzeige
AW: UserForm und Listbox
14.10.2005 11:18:02
Gerhard
Hallo Matthias!
Punkt 1 funktioniert jetzt auch perfekt!!
Leider bin ich ein VBA-Dummi! modal?
Laut meinen Buch nach dem ich so recht und schlecht arbeite habe ich das UserForm auf
vbModeless ? gesetzt was immer das auch bedeutet. Was ich auch nicht weiss und im Buch nicht beschrieben ist, warum ich alles mit "Option Explicit" beginnen soll und was es bedeutet.
Noch was wenn ich darf!
Ich habe dieses FileArray das Du leicht abgeändert hast auch für die Auflistung von Ordner in einer ListBox verwendet und irgendwie hat es mit einigen herumprobieren funktioniert aber, nur Deine Änderung bringe ich nicht hinein.

Function SubDirectories(strPath As String)
Dim arrDateien()
Dim intCounter As Integer
Dim strDatei   As String
If Right$(strPath, 1) <> "\" Then strPath = strPath & "\"
strDatei = Dir$(strPath, vbDirectory)
Do While LenB(strDatei) > 0
If strDatei <> "." And strDatei <> ".." Then
If (GetAttr(strPath & strDatei) And vbDirectory) = vbDirectory Then
'Debug.Print strPath & strDatei
intCounter = intCounter + 1
ReDim Preserve arrDateien(1 To intCounter)
arrDateien(intCounter) = strDatei
End If
End If
strDatei = Dir()
Loop
SubDirectories = arrDateien
End Function

Wenn es Dir möglich könntest Du Dir diesen Code anschauen!
Danke
Gerhard
Anzeige
AW: UserForm und Listbox
14.10.2005 11:32:21
Matthias
Hallo Gerhard,
1.
wenn ein Userform nichmodal = vbmodeless gestartet wird, wird der folgende Code gleich weiter abgearbeitet, ohne auf das Schließen der UF zu warten. Man kann also auch in der Tabelle weiterarbeiten.
Beim "normalen" Userform wartet der Code, bis das UF mit .Hide oder Unlod wieder geschlossen wurde.
2.
Option Explicit zwingt dich zur Variablendeklaration und somit zum saubereren Programmieren. Kann man im VB-Editor unter Extras, Optionen, Editor, "Variablendeklaration erforderlich" standardmäßig einschalten.
3.

Function SubDirectories(strPath As String)
Dim arrDateien()
Dim intCounter As Integer
Dim strDatei   As String
If Right$(strPath, 1) <> "\" Then strPath = strPath & "\"
strDatei = Dir$(strPath, vbDirectory)
Do While LenB(strDatei) > 0
If strDatei <> "." And strDatei <> ".." Then
If (GetAttr(strPath & strDatei) And vbDirectory) = vbDirectory Then
'Debug.Print strPath & strDatei
intCounter = intCounter + 1
ReDim Preserve arrDateien(1 To intCounter)
arrDateien(intCounter) = strDatei
End If
End If
strDatei = Dir()
Loop
If intCounter = 0 Then
ReDim Preserve arrDateien(0 To 0)
End If
SubDirectories = arrDateien
End Function

Gruß Matthias
Anzeige
AW: UserForm und Listbox Dankeschön
14.10.2005 11:43:59
Gerhard
Hallo Matthias!
Nochmals ein grosses Dankeschön für Deine tolle Hilfe!!
Es funktioniert alles ausgezeichnet und dazugelernt hab ich auch eine ganze Menge!
Danke und schönes Wochenende wünscht Dir
Gerhard
Danke für die Rückmeldung! - o.T.
14.10.2005 11:46:02
Matthias
:-)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige