Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
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
S-verweis auf geschlossene datei
abu
Hallo Zusammen,
haenge mal wieder und hoffe Ihr koennt mir helfen.
Habe eine Userform, in einer TextBox steht ein Wert. Nun moechte ich gerne diesen Wert in einer geschlossenen Datei suchen lassen und einen anderen Wert derselben Zeile zureckgeben und in eine andere TextBox eintragen lassen.
Also ein S-Verweis auf eine geschlossene Datei. Habe schon gesucht aber bekomms nicht hin...
Wuerde mich ueber Hilfe freuen.
Danke im voraus.
Gruss abu
prächtig .. Sverweis auf geschlossene Datei
Mike
Hallo Abu,
nur mal grundsätzlich, ohne auf TextBox und Userform einzugehen:
Sverweise auf geschlossene Dateien funktionieren prächtig.
Gruss
Mike
AW: prächtig .. Sverweis auf geschlossene Datei
abu
Hallo Mike,
moechtes Du mich an deinem Wissen teilhaben lassen?
Wenn ja, kannst Du mir dann auch ein Beispielcode zeigen?
Gruss abu
AW: prächtig .. Sverweis auf geschlossene Datei
Hajo_Zi
Hallo abu,
die VBA Funktion ist Vlookup

AW: prächtig .. Sverweis auf geschlossene Datei
abu
Hallo Hajo,
danke. Ich bekomm die Syntax aber einfach nicht hin:
MLF_Test.TextBox222.Value = Application.VLookup(MLF_Test.MP13_5.Value,"'G:\Sites\Beringe2\Kyocera\KME\Control Tower\Express file\[2010 Week 38.xls]Sheet1!Range("I:K"), 2, 0)
Habs mitlerweile so of umgeschrieben das siech da bestimmt noch mehr Fehler eingeschlichen haben.
Kannst Du vllt. mal drueber schauen...?
Gruss
abu
Anzeige
AW: prächtig .. Sverweis auf geschlossene Datei
BoskoBiati
Hallo,
das ist ja ein kunterbuntes Allerlei von Formel und VBA.
Probiere mal das (ungetestet):
MLF_Test.TextBox222.Value = Application.worksheetfunction.VLookup(MLF_TestMP13_5,"'G:\Sites\Beringe2\Kyocera\KME\Control Tower\Express file\[2010 Week 38.xls]Sheet1!Range("I:K"), 2, 0)

Gruß
Bosko
Buntes Allerlei
abu
Hallo Bosko,
danke fuer Deine Muehen.
Sehe ich das richtig das du nur worksheetfunction dazwischengeschoben hast?
Leider meckert er auch da. Ich glaub er hat ein Problem hiermit: Range("I:K")
Gruss
abu
AW: Buntes Allerlei
BoskoBiati
Hallo,
irgendwie landen meine Mails manchmal im Nirwana. Ich hatte gestern schon mal geantwortet:
MLF_Test.TextBox222.Value = Application.worksheetfunction.VLookup(MLF_TestMP13_5,'G:\Sites\Beringe2\Kyocera\KME\Control Tower\Express file\[2010 Week 38.xls]Sheet1'!I:K, 2, 0)
Auch ungetestet!
Gruß
Bosko
Anzeige
Typ mismatch
abu
Hallo Zusammen,
da ich es leider nicht hinbekomme einen Sverweis auf eine geschlossenen Datei hinzubekommen habe ich im Netz ein anderes Programm gefunden das mir die Zeilennummer zurueckgibt.
Leider braucht dieses Programm ewig da die Suchdateien ca. 4500 Zeilen haben.
Analog zu diesem Programm versuche ich nun doch wieder einen Sverweis zu machen in der Hoffnung das dies schneller geht. Nun bekomme ich die Fehlermeldung:Typ mismatch. Die Zeile lautet:
z = Application.WorksheetFunction.VLookup(Suchbegriff, strPath & strDat & strTab & Range("I:K"), 2, False)
Die Variablendeklaration habe ich analog zu dem Programm was ich im Netz gefunden habe vorgenommen:
Dim Suchbegriff$
Dim z$
Scheinbar meckert er nun nicht merh ueber die Argument des Vlookup und auch nicht mehr ueber den Pfad.
Nun hab ich 2 Fragen: Warum gibt er diese Fehlermeldung aus und was bedeutet das $ bei der Dekleration der Variablen?
Hoffe Ihr koennt mir helfen.
Gruss
abu
Anzeige
$ ist Kurzdeklaration für 'As String' -orT
Luc:-?
Gruß Luc :-?
Typ mismatch
abu
Hallo Luc,
danke!
Hast Du vllt. auch eine Idee was ich hier falsch mache?
z = Application.WorksheetFunction.VLookup(Suchbegriff, strPath & strDat & strTab & Range("I:K"), 2, False)
Gruss
abu
Eigentl nichts, wenn die Variablen auch...
Luc:-?
…die richtigen Werte enthalten würden, abu…
aber das tun sie nicht, denn aus String-Variablen kann man keinen Suchbereich zusammenbasteln. Das muss ein Objekt wdn! Also…
z = WorksheetFunction.VLookup(Suchbegriff, Workbooks(strPath & strDat).Sheets(strTab).Range("I:K"), 2, False)
Aber das nutzt dir gar nichts, denn VBA kann so nicht auf geschlossene Dateien zugreifen! Hier kannst du aber die Evaluate-Methode verwenden, also…
z = Evaluate("VLookup(" & Suchbegriff & "," & strPath & strDat & strTab & "I:K,2,0)")
…wenn die Variableninhalte stimmen. Ist Suchbegriff ein Text, muss er mit "" beginnen und enden, also hier …(""" & Suchbegriff & """," &… schreiben. Wenn Ordner- u/o Dateinamen nicht der ursprgl Konvention für zulässige Zeichen in Namen entsprechen, muss der strPath-Inhalt mit Apostroph (') beginnen und strTab mit '!, sonst nur mit !, enden. Außerdem endet strPath natürlich mit "\", aber strDat muss in eckige Klammern eingeschlossen wdn, genauso, wie es auch in einer ZellFml stehen würde!
Außerdem ist es in xlVss vor xl12 ggf ratsam, Suchbereiche spalten- und zeilenweise zu begrenzen…
Gruß Luc :-?
Anzeige
AW: mit Pfadangabe Fehlermeldung bleibt
abu
Hallo Luc,
erstmal Danke das Du dich mit meinem Problem auseinander setzt. Ich denke ich hab die Pfadangabe richtig:
Dim z$
Dim Suchbegriff$
strPath = "'G:\Sites\xxx\xxx\xxx\xxx\Express file\"
strDat = "[2010 Week 38.xls]"
strTab = "Sheet1'!"
Suchbegriff = "7772010862"
Nun dein Vorschlag: z = Evaluate("VLookup(" & Suchbegriff & "," & strPath & strDat & strTab & "I:K,2,0)")
Der Suchbegriff ist immer eine 10-stellige Zahl die ich aus einer TextBox hole, fuer das Beispiel hab jetzt einfach mal eine Zahl genommen die in der Suchtabelle steht.
Leider bleibt die Fehlermeldung gleich. Siehst Du einen Fehler?
OK, ich koennte noch die Zeilennummer rausfuchsen von I2:K-letzte gefuellte Zeile aber das ist doch nur ein performence Problem. Wenn ich es irgendwann mal hinbekomme werde ich auch das noch aendern.
Gruss
Abu
ps. ist Evaluate so was wie ExecuteExcel4Macro?
Anzeige
nicht Evaluate sondern ExecuteExcel4Macro
Tino
Hallo,
der Zellbereich muss aber in der R1C1 Schreibweise verwendet werden, aber VBA kann uns dabei helfen.
Beispiel:
Sub Makro1()
Dim sPfad$, sDatei$, sTab$, sRange$, sSuchwert$, sFormelString$
Dim vErgebnis
sPfad = "'G:\Sites\xxx\xxx\xxx\xxx\Express file\" 'Pfad
sDatei = "[2010 Week 38.xls]" 'Datei
sTab = "Sheet1'!" 'Tabelle
sRange = Range("I:K").Address(ReferenceStyle:=xlR1C1) 'Zellbereich
sSuchwert = "7772010866" 'Suchwert
'String zusammensetzen
sFormelString = sPfad & sDatei & sTab & sRange
vErgebnis = ExecuteExcel4Macro("VLOOKUP(" & sSuchwert & "," & sFormelString & ",2,FALSE)")
If Not IsError(vErgebnis) Then
MsgBox "Ergebnis: " & vErgebnis, vbInformation
Else
MsgBox "Suchwert: " & sSuchwert & " wurde nicht gefunden!", vbExclamation
End If
End Sub
Gruß Tino
Anzeige
Funktioniert nur wenn.....
abu
Hallo Tino.
vielen Dank das Du dir die Muehe gemacht hast ein Beispielcode zu schreiben.
HHabe folgendes festgestellt:
Nehme ich deinen Code und lass ihn laufen fragt er wo die Datei ist. Da der Pfad ja fix ist habe ich das mit Application.DisplayAlerts = False/True abgestellt.
Wenn ich nun Excel schliesse und wieder oeffne, findet er den Suchwert nicht.
Erst wenn ich Application.DisplayAlerts = False/True rausnehme und die Datei auswaehle findet er es wieder. Stelle ich dann Application.DisplayAlerts = False/True wieder ein klappts auch solange ich Excel nicht schliesse.
In meinem Code moechte ich aber keine Dateiauswahl haben.
Ich lass die aktuelle Kalenderwoche feststellen und dann mit einer Schleife aendere ich den Wert
strDat = "[2010 Week 38.xls]" und lass rueckwaerts solange suchen bis er die richtige Datei hat.
Also hier nun die Frage: Warum kommt dieser Dialog ueberhaupt und warum findet er den Wert nicht obwohl die Pfadangabe in Ordnung ist?
Hoffe Du kannst mir da auch weiterhelfen.
Beste Gruesse
Abu
Anzeige
AW: Funktioniert nur wenn.....
Tino
Hallo,
dies kann nur sein wenn der Pfad nicht richtig angegeben wurde.
Wie im Beispiel muss bei sPfad der richtige Pfad angegeben werden und
dabei muss darauf geachtet werden diesen mit einem ' zu beginnen und mit \ zu beenden.
Den Dateinamen in Eckige Klammern fassen und den Tabellennamen mit '! zu beenden.
sPfad = "'G:\Sites\xxx\xxx\xxx\xxx\Express file\" 'Pfad
sDatei = "[2010 Week 38.xls]" 'Datei
sTab = "Sheet1'!" 'Tabelle
sRange = Range("I:K").Address(ReferenceStyle:=xlR1C1) 'Zellbereich
sSuchwert = "7772010866" 'Suchwert
Gruß Tino
Anzeige
Pfad ist ok
abu
Hallo Tino,
also habs noch mal getestet mit ActiveWorkbook.Path und da ist kein Fehler.
Wenn ich den Dialog ja nach dem erstmal austelle, findet er die Datei ja auch....
Hier noch mal der mein Code:
Sub SSuchen()
Dim sPfad$, sDatei$, sTab$, sRange$, sSuchwert$, sFormelString$
Dim vErgebnis
Dim woche As Integer
woche = dt_Kalenderwoche(Date)
sPfad = "'G:\Sites\Beringe2\xxx\KME\Control Tower\Express file\" 'Pfad
'sDatei = "[2010 Week " & woche & ".xls]" 'Datei
sTab = "Sheet1'!" 'Tabelle
sRange = Range("I:K").Address(ReferenceStyle:=xlR1C1) 'Zellbereich
sSuchwert = MLF_Test.MP13_5    '"8072004518" 'Suchwert
'String zusammensetzen
'sFormelString = sPfad & sDatei & sTab & sRange
' Application.DisplayAlerts = False
Do
'String zusammensetzen
sDatei = "[2010 Week " & woche & ".xls]"
sFormelString = sPfad & sDatei & sTab & sRange
vErgebnis = ExecuteExcel4Macro("VLOOKUP(" & sSuchwert & "," & sFormelString & ",2,FALSE)")
woche = woche - 1
Loop Until IsError(vErgebnis) = False Or woche = 0
'Application.DisplayAlerts = True
If Not IsError(vErgebnis) Then
MsgBox "Ergebnis: " & vErgebnis, vbInformation
Else
MsgBox "Suchwert: " & sSuchwert & " wurde nicht gefunden!", vbExclamation
End If
End Sub
Leider funktioniert mein Ansatz nicht wenn man die Datei auswaehlen muss da der User nicht die Woche kennt.
Siehst Du einen Fehler?
Gruss
Abu
Anzeige
@Tino-warum...
robert
Hi Tino,
warum gibt diese zeile
sRange = Range("I:K").Address(ReferenceStyle:=xlR1C1) 'Zellbereich
sRange=C9:C11 ?
gruß
robert
sorry-offen vergessen ;-(
robert
Tino schrieb
abu
Hallo Robert,
Tino hatte in seinem ersten Beitrag zu meinem Problem geschrieben:
Hallo,
der Zellbereich muss aber in der R1C1 Schreibweise verwendet werden, aber VBA kann uns dabei  _
helfen.
Gruss abu
ja aber-wo soll gesucht werden?
robert
Hi,
durch diese schreibweise ändern sich nur die zeilen-nummern, aber nicht die spalte-
die spalte ist immer C, soll das so sein?
wen ich die formel ändere-zB. sRange=Range("I:O")
dann ist sRange=C9:C15
das verwirrt mich...
gruß
robert
AW: ja aber-wo soll gesucht werden?
Tino
Hallo,
in der R1C1 Schreibweise steht das C für Column (Spalte) also C9:C11 ist Spalte 9 bis 11.
Wenn da noch ein R dabei steht, gilt dies für Zeilen (Row).
Beispiel:
Sub Beispiel()
'Spalten
MsgBox Range("I:K").Address(ReferenceStyle:=xlR1C1)
MsgBox Range("I:K").Address(ReferenceStyle:=xlA1) 'Standard
'Zeilen
MsgBox Range("1:5").Address(ReferenceStyle:=xlR1C1)
MsgBox Range("1:5").Address 'Standard
'Bereich
MsgBox Range("A1:B5").Address(ReferenceStyle:=xlR1C1)
MsgBox Range("A1:B5").Address 'Standard
End Sub

@abu
also dies muss funktionieren wenn Dein Pfad richtig ist,
sonst ist da was falsch da hilft auch kein DisplayAlerts = False.
Gehe mal in den Ordner über dem Explorer und kopiere Dir den Pfad in den Code.
Schau mal in die Tabelle ob die Tabelle auch Sheet1 benannt ist oder vieleicht ein Leerzeichen dabeisteht das man übersehen hat, am besten diesen Namen auch kopieren und in den Code entsprechend einfügen (verhindert Schreibfehler).
Sonst kann ich es nicht nachvollziehen und auch nicht weiterhelfen.
Gruß Tino
bei mir auch FEHLER....
robert
Hi Tino,
das mit R1C1 verstehe ich, aber ich habe in einer datei den begriff WertE7 stehen.
mit deinem makro findet er den begriff nicht, makro läuft aber sauber durch.
pfad, dateiname, blattname stimmen sicher.
hast du es bei dir getestet ?
sorry für die frage ;-)
gruß
robert
@abu, hier ein Beispiel ...
Tino
Hallo,
habe Dir hier mal ein Beispiel aufgebaut damit Du sehen kannst wie es funktionieren sollte.
Weil ich aber nicht weiß wo dieses Beispiel bei Dir landet, habe ich den Pfad etwas anders einbauen müssen, aber das Prinzip ist gleich geblieben.
Zip- File auspacken und die Datei Mappe1.xls testen.
https://www.herber.de/bbs/user/71875.zip
Gruß Tino
PS: Code getestet unter xl2003 u. 2007 oT.
Tino
@Tino-wenn Suchbegriff ein Text...
robert
Hi Tino,
bei suchbegriffen mit text zB. A99 funktioniert es nicht-warum?
wie änderung-wenn möglich ?
gruß
robert
wir verwenden doch den Sverweis...
Tino
Hallo,
aus der Hilfe.
SVERWEIS
Sucht in der ersten Spalte einer Tabellenmatrix nach einem Wert und gibt in der gleichen Zeile einen Wert aus einer anderen Spalte in der Tabellenmatrix zurück.
Das S in SVERWEIS steht für "senkrecht". Verwenden Sie SVERWEIS statt WVERWEIS, wenn sich Ihre Vergleichswerte in einer Spalte links von den Daten befinden, die Sie suchen möchten.
Gruß Tino
wir reden aneinander vorbei...
robert
Hi Tinoi,
in deiner beispieldatei wird in der spalte mit zahlen gesucht,
wenn man diese zahlen durch texte ersetzt und sucht funktioniert es nicht ;-(
beispiel: spalte A mit texten gefüllt, spalte B mit zahlen
wenn nun der suchstring zB "A8" lautet, und in spalte A gibt es den,
kommt ein fehler !
wenn in spalte A zahlen sind und ich suche eine zahl, dann funkt's.
siehe datei
https://www.herber.de/bbs/user/71892.xls
gruß
robert
AW: wir reden aneinander vorbei...
Tino
Hallo,
Du musst bei Text etwas um die Ecke denken und an die Anführungsstriche denken.
Wenn Du als Text "A9" übergibst, kommt in der Formel A9 an und dies wäre ein Zellebezug.
Übergib mal """A9""" damit in der Formel "A9" ankommt, dann sollte es funktionieren.
Gruß Tino
Danke Tino ! -das war's... owT
robert
Shame on me! Sorry und Danke
abu
Hallo Tino,
obwohl ich eigentlich die Pfade kopiert hatte, muss sich trotzdem wohl ein Fehler eingeschlichen haben.
Funktioniert nun.
1000 Danke fuer deine Hilfe und Geduld.
Beste Gruesse
Abu
konnte ich mir schon denken ;-) oT.
Tino

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige