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

Nur gewisse Daten in Listbox einlesen lassen

Nur gewisse Daten in Listbox einlesen lassen
22.09.2006 16:53:38
Josef
Hallo!
Mit folgendem Code kann man eine Worddatei auswählen und den Dateinamen in die TextBox19 eintragen lassen:

Private Sub CommandButton25_Click()
Dim Dateiname
Dateiname = Application.GetOpenFilename _
("Word-Dateien (*.doc), *.doc", , "Dateiauswahl", , False)
If Dateiname <> False Then
TextBox19.Text = Dateiname
End If
TextBox18.Text = "Dateinamen vergeben"
End Sub

Mit folgendem Code wird der Pfad in das Arbeitsblatt Word eingetragen:
Spalte A der Dateiname
Spalte B der dazugehörige Pfad

Private Sub CommandButton27_Click()
Workbooks("Abteilungsablage.xla").IsAddin = False
Workbooks("Abteilungsablage.xla").Activate
Sheets("Word").Select
If Range("A1") = "" Then
Range("A1") = TextBox18.Text
Else
Range("A65536").End(xlUp).Offset(1, 0).Value = TextBox18.Text
End If
If Range("B1") = "" Then
Range("B1") = TextBox19.Text
Else
Range("A65536").End(xlUp).Offset(1 - 1, 1).Value = TextBox19.Text
End If
Workbooks("Abteilungsablage.xla").Save
'Workbooks("Abteilungsablage.xla").IsAddin = True
End Sub

Mit folgendem Code werden die vorhandenen Dateinamen in die Listbox3 eingetragen.

Private Sub CommandButton23_Click()
Workbooks("Abteilungsablage.xla").Activate
Sheets("Word").Select
'Dim z
Dim My_ArrayC As Variant
ListBox2.Visible = False
ListBox3.Visible = True
ListBox4.Visible = False
My_ArrayC = Workbooks("Abteilungsablage.xla").Worksheets("Word").Range("$A$1:$B$1000")
With ListBox3
.ColumnCount = 2
.BoundColumn = 2
.ColumnWidths = "2cm;0cm"
.List = My_ArrayC
End With
'Workbooks("Abteilungsablage.xla").Activate
'Sheets("Word").Select
'ListBox2.Visible = False
'ListBox3.Visible = True
'ListBox4.Visible = False
''Listbox beim Laden mit Einträgen aus Spalte A befüllen
'    ListBox3.Clear
'    With ListBox3
'    .ColumnCount = 2
'    .BoundColumn = 2
'    .ColumnWidths = "2cm;0cm"
'    End With
'    For z = 1 To Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row
'        ListBox3.AddItem Sheets(2).Cells(z, 1)
'Next
End Sub

Wird jetzt ein Dateiname in der Listbox3 doppelt angeklickt, dann wird der Pfad in die Textbox15 eingetragen und das gewünschte word Dokument wird eingetragen.

Private Sub ListBox3_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
TextBox15.Text = ListBox3 '.Column(1)
Call WordStarten
End Sub

Sub WordStarten()
On Error Resume Next
Dim strDat As String
Dim Pfad
Pfad = UserForm1.TextBox15.Text
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Add(Pfad)
'wdApp.Run "Oeffnen"
'wdApp.Selection.Goto what:=wdGoToBookmark, Name:="Name"
'wdApp.Selection.TypeText "Hallo"
wdApp.Visible = True
' strDat = wdApp.Dialogs(wdDialogFileOpen).Show
' If strDat "0" Then
' Set wdDoc = wdApp.Documents.Open(strDat)
' wdApp.MacroContainer
' End If
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
Dazu würde ich jetzt bitte noch folgende Lösung suchen:
Wenn jetzt in der Spalte A Nummern stehen würden,
der Dateiname nicht in der Spalte A sondern in der Spalte B
Der Pfad der Datei nicht in der Spalte B sondern in der Spalte C
dann sollte folgendes passieren:
Wenn es z.B. in der Spalte A 4 Einträge mit einer 1 gibt, dann sollen nur die zur 1 gehörenden Dateinamen in die Listbox3 eingelesen werden. Gäbe es in der Spalte A 6 Einträge mit einer 2, dann sollen nur die zur 2 gehörenden Dateinamen in die listbox eingetragen werde usw.
wie würde hier bitte eine Erweiterung des VBA Codes lauten?
Danke
Josef

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nur gewisse Daten in Listbox einlesen lassen
24.09.2006 22:42:43
fcs
Hallo Josef,
ungetest müsste folgender Code für "CommandButton23_Click" funktionieren, der nur die Zeilen in das Array einträgt die in Spalte A den Kriteriumseintrag haben. Das Kriterium für Spalte A wird in einer Eingabebox abgefragt. Hierfür kannst du dir natürlich auch eine Textbox im Formular anlegen. Falls du an anderer Stelle im Code auch noch auf die "früheren" Spalten A und B verweist, dann muss du dort auch entsprechend anpassen. In dem gepostetten Code hab ich auf die Schnelle aber nichts in der Richtung gefunden.
Gruss
Franz

Private Sub CommandButton23_Click()
Dim wks As Worksheet, Bereich As Range, Kriterium, Anzahl As Long, I As Long, J As Long
Dim My_ArrayC()
Set wks = Workbooks("Abteilungsablage.xla").Sheets("Word")
With wks
'Bereich mit Daten in A1:Cxxx, wobei xxx als letzte Zeile in Spalte B ermittelt wird
Set Bereich = .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 3))
'Kriterium in Spalte A
Kriterium = InputBox("Kriterium in Spalte A für Datei-Auswahl in Listbox3?" & vbLf & vbLf _
& " Abbrechen listet alle Dateien", "Listbox 3 - Kriterium")
If Kriterium = "" Then 'Abbrechen wurde gewählt
ReDim My_ArrayC(0 To Bereich.Rows.Count - 1, 0 To 1)
For I = 0 To Bereich.Rows.Count - 1
My_ArrayC(I, 0) = Bereich(I + 1, 2)
My_ArrayC(I, 1) = Bereich(I + 1, 3)
Next I
Else
'Anzahl Zeilen mit Kriterium
Anzahl = Application.WorksheetFunction.CountIf(Bereich.Columns(1), Kriterium)
'Bei Verendung von zahlen als Kriterium evtl. folgende Zeile verwenden
'      Anzahl = Application.WorksheetFunction.CountIf(Bereich.Columns(1), Val(Kriterium))
ReDim My_ArrayC(0 To Anzahl - 1 - 1, 0 To 1)
J = 0
For I = 1 To Bereich.Rows.Count
If Bereich(I, 1) = Kriterium Then
'        If Bereich(J, 1) = Val(Kriterium) Then 'Bei Zahlen als Kriterium evtl. so
My_ArrayC(J, 0) = Bereich(I, 2)
My_ArrayC(J, 1) = Bereich(I, 3)
J = J + 1
End If
Next I
End If
End With
ListBox2.Visible = False
ListBox3.Visible = True
ListBox4.Visible = False
With ListBox3
.ColumnCount = 2
.BoundColumn = 2
.ColumnWidths = "2cm;0cm"
.List = My_ArrayC
End With
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige