Ich habe ein Makro, was folgende Aktionen per Knopfdruck durchfuehrt:
1. Ein Inputfenster oeffnet sich
2. Nach der Eingabe einer Zahl (z.B. 111) werden alle *.XLS Dateien eines Ordners in einer bestimmten Zelle ( bei mir "G41") durchsucht und getestet, ob der eingetragene Wert (111) sich in der Zelle ("G41") befindet
3. Sollten Ergebnisse gefunden werden (d.h. sollten eine oder mehrere Dateien in der Zelle G41 den Wert 111 enthalten), werden die Pfade dieser Dateien sowie deren Dateinamen in einem neu geoeffneten Blatt dargestellt
Mein Ziel:
In meinen Exceltabellen befinden sich IMMER in Zelle "G41" die Gesamtkosten eines Produkts.
Ich moechte mit meiner Suchfunktion nun alle Dateien finden, in denen die Gesamtkosten, also der Wert in "G41" kleiner oder gleich dem in das Inputfenster eingetragene Suchwert (hier: "111") sind.
Um das zu schaffen, muesste man die bisherige Suchfunktion ein wenig umwandeln, denn bisher findet mein Suchprogramm nur Werte, die identisch zu dem in das Inputfenster eingetragenen Suchwert sind.
Meine Frage:
Ist es moeglich, meine Suche so zu veraendern, dass nicht nur indentische Werte gefunden werden, sondern auch Werte die kleiner des in die Inputbox eingetragenen Suchwerts sind?
- In meinem Beispiel waeren das dann alle Dateien, die in der Zelle "G41" einen Wert haben, der kleiner oder gleich 111 ist.
Meine Idee
In meiner (unten angehaengten) bisherigen Funktion wird die Variable "wort", als der in die Inputbox eingetragene Wert (111) definiert:
wort = InputBox("Gib hier die Gesamtkosten ein")
In meiner Suche wird dann nur nach "wort" (111) gesucht und nicht nach kleiner gleich "wort" (111):
Set erg = ws.Cells(41, 7).Find(What:=wort, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
1. Ich vermittel irgendwo in der Suche, dass nicht =wort, sondern ------ das habe ich nicht geschafft (vielleicht auch unmoeglich?!)
2. Ich definiere eine Variable als ------ das habe ich auch nicht geschafft!
Ich hoffe ich konnte mein Problem halbwegs anschaulich erklaeren und bin natuerlich fuer jeden Loesungsansatz offen!
Vielen Dank im voraus und freundliche Gruesse!
Chris
----------------------------------------------------------------------------------------------
Bisheriges Programm:
Private Sub CommandButton6_Click()
Dim wort$, fs As FileSearch, i%, efz%
Dim wsA As Worksheet, wb As Workbook, ws As Worksheet, erg As Range
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.AskToUpdateLinks = False
wort = InputBox("Gib hier die Gesamtkosten ein")
'hier wird die Variable "wort" als gleich Suchwert definiert... sie muesste aber wenn _
moeglich kleiner gleich dem Suchwert sein
If wort = "" Then Exit Sub
On Error Resume Next
Application.DisplayAlerts = False
ThisWorkbook.Worksheets("Auswahl").Delete
Application.DisplayAlerts = True
ThisWorkbook.Worksheets.Add.Name = "Auswahl"
Set wsA = ActiveWorkbook.Worksheets(1)
Set fs = Application.FileSearch
With fs
.LookIn = "\\192.168...\HakC\Exceldateien"
.Filename = "*.xls"
.SearchSubFolders = False
.Execute
wsA.Range("A1").Value = " wurde in folgenden Dateien gefunden:"
wsA.Rows(1).Font.Bold = True
wsA.Range("B1").Value = "Dateiname"
wsA.Range("C1").Value = "Fundzelle"
For i = 1 To .FoundFiles.Count
If Dir(.FoundFiles(i)) ThisWorkbook.Name Then
Workbooks.Open .FoundFiles(i)
Set wb = ActiveWorkbook
Set ws = ActiveSheet
Set erg = ws.Cells(41, 7).Find(What:=wort, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If Not erg Is Nothing Then
efz = wsA.Cells(Rows.Count, 1).End(xlUp).Row + 1
wsA.Cells(efz, 1).Value = .FoundFiles(i)
ws.Hyperlinks.Add Anchor:=wsA.Cells(efz, 1), Address:=.FoundFiles(i)
wsA.Cells(efz, 2).Value = Dir(.FoundFiles(i))
wsA.Cells(efz, 3).Value = erg.Address
End If
wb.Close False
End If
Next i
End With
wsA.Columns.AutoFit
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
End Sub