HERBERS Excel-Forum - das Archiv
Brauche Hilfe zu VBAcode
ray

Hallo,
ich möchte eine bestimtme Zahl (irgendwas) in Spalte C einer externen Tabelle suchen und mir die Zeilenr in der das gefunden wurde zurückgeben. Leider geht es so nicht.
Kann mir jemand bitte helfen:
Private Sub UserForm_Click()
'#### Daten suchen und Nr. der Zeile zurückgeben in der es steht START ####
Dim wbk As Workbook
Dim wks As Worksheet
Dim irgendwas
irgendwas = "524"
Set wbk = Workbooks.Open("F:\daten\mängelliste.xls")
Set wks = wbk.Sheets(1) 'sheet heißt meldungen
msgbox"" & MATCH(irgendwas,wks!R1C[2]:R65536C[2],0)"
'msgbox"" & MATCH("524",'F:\daten\[mängelliste.xls]meldungen'!R1C[2]:R65536C[2],0)"
wbk.Close
Set wbk = Nothing
Set wks = Nothing
'#### Daten suchen und Nr. der Zeile zurückgeben in der es steht ENDE ####
End Sub

Viele Grüße aus Hamburg
Ray

Anweisung ist falsch
Ramses

Hallo
Wenn schon, müsste es so heissen
msgbox Application.Worksheetfunction.MATCH(irgendwas,wks!R1C[2]:R65536C[2],0)
Gruss Rainer
AW: Anweisung ist falsch
ray

Hab das jetzt so eingebaut, aber es kommt eine Fehlermeldung wobei ''[2]'' blau ist.
Private Sub UserForm_Click()
'#### Daten suchen und Nr. der Zeile zurückgeben in der es steht START ####
Dim wbk As Workbook
Dim wks As Worksheet
Dim vRow As Variant
Dim irgendwas
irgendwas = "524"
Application.ScreenUpdating = False
Set wbk = Workbooks.Open("F:\daten\mängelliste.xls")
'On Error GoTo zerror
Set wks = wbk.Sheets(1) 'sheet heißt meldungen
msgbox Application.Worksheetfunction.MATCH(irgendwas,wks!R1C[2]:R65536C[2],0) 'hier  _
kommt die ErrMld bei [2] von R1C
zerror:
ActiveWorkbook.Close savechanges:=False
wbk.Close
Set wbk = Nothing
Set wks = Nothing
'#### Daten suchen und Nr. der Zeile zurückgeben in der es steht ENDE ####
End Sub

AW: Anweisung ist falsch
Ramses

Hallo
Die Rangeanweisung ist falsch
MsgBox Application.WorksheetFunction.Match(irgendwas, wks.Range("B:B"), 0)
Gruss Rainer
funzt nicht - ich geb auf und schließe
ray

code stoppt bei
MsgBox Application.WorksheetFunction.Match(irgendwas, wks.Range("B:B"), 0)
Gruß Ray
Warum...
Ramses

Hallo
ich kann nicht auf deinen Rechner sehen,... also musst du selbst die Fehler suchen.
Suchst du eine Zahl !! dann ist deine Deklaration falsch
Dim irgendwas as Long
oder wenn es Dezimalzahlen sein können dann
Dim irgendwas as Double
irgendwas = 524
ohne Anführungszeichen.
Die Msgbox Anweisung die ich dir gesandt habe ist getestet und funktioniert.
Also ist etwas in deiner Mappe fehlerhaft
Gruss Rainer
Warum? Darum!
ray

Das Problem ist, dass die "Zahlen" in der externen Tabelle z. T. nicht als Zahlen sondern als Text abgelegt sind. Ich weiß also nicht, ob ich eine Zahl oder einen Text suche...
Eigentlich Schaden, den Vergleich ist genau das, was ich brauche.
Gruß Ray
Nicht aufgeben :-)
Ramses

Hallo
probier mal

Private Sub UserForm_Click()
    '#### Daten suchen und Nr. der Zeile zurückgeben in der es steht START ####
    Dim wbk As Workbook
    Dim wks As Worksheet
    Dim irgendwas As Variant, myResult As Variant
    'Als Zahl suchen
    irgendwas = 524
    Set wbk = Workbooks.Open("F:\daten\mängelliste.xls")
    Set wks = wbk.Sheets(1) 'sheet heißt meldungen
    myResult = Match(irgendwas, wks.Range("B:B"), 0)
    If myResult = "" Then
        'Als Text suchen
        irgendwas = "524"
        myResult = Match(irgendwas, wks.Range("B:B"), 0)
    End If
    If myResult = "" Then
        MsgBox "Suchbegriff: " & irgendwas & " wurde nicht gefunden!", vbInformation + vbOKOnly, "Fehler"
        Exit Sub
    Else
        MsgBox "Suchbegriff gefunden in Zeile: " & myResult, vbInformation + vbOKOnly, "Ergebnis"
    End If
    wbk.Close
    Set wbk = Nothing
    Set wks = Nothing
End Sub

Gruss Rainer
AW: Nicht aufgeben :-)
ray

danke, ich quäl mich schon richtig:
Jetzt ErrMld bei
myResult = Match(irgendwas, wks.Range("B:B"), 0)
Fehler beim Komplieren - Sub oder func nicht definiert....
Ich weiß gar nicht, sehen wir schon die Zielgerade?
Gruß Ray
AW: Nicht aufgeben :-)
Ramses

Hallo
dann schreib anstelle von "Match"
Application.WorksheetFunction.Match
Gruss Rainer
Und Schluss...
ray

Nochmals danke, aber ErrMld: die Match-Eigenschaft kann nciht zugeordnet werden.
GameOver.
Aber danke für Deine Zeit.
Gruuß Ray
Getestet und funktioniert...
Ramses

Hallo
Ich habe das ganze jetzt mal nachgebaut und es funktioniert
Private Sub UserForm_Click()
'#### Daten suchen und Nr. der Zeile zurückgeben in der es steht START ####
Dim wbk As Workbook
Dim wks As Worksheet
Dim irgendwas As Variant, myResult As Variant
'Als Zahl suchen
irgendwas = 123
Set wbk = Workbooks.Open("F:\daten\mängelliste.xls")
Set wks = wbk.Sheets(1) 'sheet heißt meldungen
On Error Resume Next
myResult = Application.WorksheetFunction.Match(irgendwas, wks.Range("B:B"), 0)
If myResult = "" Then
'Als Text suchen
irgendwas = "524"
myResult = Application.WorksheetFunction.Match(irgendwas, wks.Range("B:B"), 0)
End If
If myResult = "" Then
MsgBox "Suchbegriff: " & irgendwas & " wurde nicht gefunden!", vbInformation + vbOKOnly, " _
Fehler"
Exit Sub
Else
MsgBox "Suchbegriff gefunden in Zeile: " & myResult, vbInformation + vbOKOnly, "Ergebnis"
End If
wbk.Close
Set wbk = Nothing
Set wks = Nothing
End Sub

Gruss Rainer
Respekt Ramses, Respekt. Vielen Dank.
ray

Gruß Ray
noch offen
ray

haken vergessen...
closed
ray

c