Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Brauche Hilfe zu VBAcode | Herbers Excel-Forum


Betrifft: Brauche Hilfe zu VBAcode von: ray
Geschrieben am: 05.01.2010 13:40:22

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

  

Betrifft: Anweisung ist falsch von: Ramses
Geschrieben am: 05.01.2010 13:49:24

Hallo

Wenn schon, müsste es so heissen

msgbox Application.Worksheetfunction.MATCH(irgendwas,wks!R1C[2]:R65536C[2],0)

Gruss Rainer


  

Betrifft: AW: Anweisung ist falsch von: ray
Geschrieben am: 05.01.2010 14:11:05

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



  

Betrifft: AW: Anweisung ist falsch von: Ramses
Geschrieben am: 05.01.2010 14:20:10

Hallo

Die Rangeanweisung ist falsch

MsgBox Application.WorksheetFunction.Match(irgendwas, wks.Range("B:B"), 0)

Gruss Rainer


  

Betrifft: funzt nicht - ich geb auf und schließe von: ray
Geschrieben am: 05.01.2010 14:28:46

code stoppt bei
MsgBox Application.WorksheetFunction.Match(irgendwas, wks.Range("B:B"), 0)

Gruß Ray


  

Betrifft: Warum... von: Ramses
Geschrieben am: 05.01.2010 14:37:34

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


  

Betrifft: Warum? Darum! von: ray
Geschrieben am: 05.01.2010 14:42:24

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


  

Betrifft: Nicht aufgeben :-) von: Ramses
Geschrieben am: 05.01.2010 14:56:07

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


  

Betrifft: AW: Nicht aufgeben :-) von: ray
Geschrieben am: 05.01.2010 15:03:48

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


  

Betrifft: AW: Nicht aufgeben :-) von: Ramses
Geschrieben am: 05.01.2010 15:30:14

Hallo

dann schreib anstelle von "Match"

Application.WorksheetFunction.Match

Gruss Rainer


  

Betrifft: Und Schluss... von: ray
Geschrieben am: 05.01.2010 15:40:56

Nochmals danke, aber ErrMld: die Match-Eigenschaft kann nciht zugeordnet werden.

GameOver.

Aber danke für Deine Zeit.

Gruuß Ray


  

Betrifft: Getestet und funktioniert... von: Ramses
Geschrieben am: 05.01.2010 16:02:57

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


  

Betrifft: Respekt Ramses, Respekt. Vielen Dank. von: ray
Geschrieben am: 06.01.2010 12:23:42

Gruß Ray


  

Betrifft: noch offen von: ray
Geschrieben am: 05.01.2010 14:29:13

haken vergessen...


  

Betrifft: closed von: ray
Geschrieben am: 05.01.2010 14:29:35

c