Daten aus Excel auslesen und in MSGBox ausgeben

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von roddy.

    Daten aus Excel auslesen und in MSGBox ausgeben

    Hallo,

    ich habe seit Jahren nicht mehr mit VB ^^ gearbeitet und muss nun ein ganz kleines Programm schreiben.

    Man soll in einem Fenster einfach nur einen Namen eingeben können und über einen Button wird dann in einer bestimmten Spalte einer Excel Tabelle nach diesem Namen gesucht.

    Wenn dieser gefunden wird, soll dieser und ein paar andere Daten in der gleichen Zeile in einer MSGBox ausgegeben werden.

    Wenn nicht, halt auch ne Box mit "keinen Eintrag gefunden".

    Ist bestimmt nicht schwer, aber ich denke hier kriegt das jemand wesentlich schneller hin.
    Hallo Denyo,

    wenn beispielsweise der zu suchende Name in Spalte A steht und die anzuzeigenden Daten in Spalte B und C sind, lässt sich das mit diesem kleinen Makro bewerkstelligen, wobei jedoch das Makro nach dem ersten Auffinden des Namens abbricht:

    VB.NET-Quellcode

    1. Sub Auslesen1()
    2. n = ActiveCell.SpecialCells(xlLastCell).Row
    3. Suchbegriff = InputBox("Bitte Name eingeben:")
    4. For i = 2 To n
    5. If Range("A" & i) = Suchbegriff Then
    6. MsgBox Range("B" & i) & vbTab & Range("C" & i)
    7. Exit Sub
    8. End If
    9. Next
    10. MsgBox "Es wurde kein Eintrag zu """ & Suchbegriff & """ gefunden."
    11. End Sub


    Wenn der Name mehrmals vorkommen kann, hätte ich noch diese Variante anzubieten:

    VB.NET-Quellcode

    1. Sub Auslesen2()
    2. n = ActiveCell.SpecialCells(xlLastCell).Row
    3. Suchbegriff = InputBox("Bitte Name eingeben:")
    4. m = ""
    5. For i = 2 To n
    6. If Range("A" & i) = Suchbegriff Then
    7. m = m & Chr(13) & Range("B" & i) & vbTab & Range("C" & i)
    8. End If
    9. Next
    10. If m = "" Then
    11. MsgBox "Kein Eintrag zu """ & Suchbegriff & """ gefunden."
    12. Else
    13. MsgBox Mid(m, 2, 10000)
    14. End If
    15. End Sub


    Hier werden die Daten von allen Vorkommen des gesuchten Namens jeweils in einer separaten Zeile in der MsgBox angezeigt.

    Wenn beispielsweise "Müller" dreimal vorkommt, einmal mit dem Wert "A", einmal mit "E" und einmal mit "X" wird dies als

    A
    E
    X

    angezeigt.
    Danke für die schnelle Hilfe.

    Werde wohl das zweite Script benutzen, weil nach Nachnamen gesucht werden soll und da es ja auch mehrere geben kann.

    Probiere das heut abend mal aus.

    Da ich nun wirklich nicht mehr viel von VB weiß, müsste ich noch wissen, wie ich überhaupt die Excel Datei angeben kann.

    Oder soll ich das als Makro in der Datei selber starten?
    Es gibt mehrere Möglichkeiten:
    1. Das Makro direkt in der betreffenden Excel-Datei speichern:

      Hierzu die Excel-Datei öffnen, über "Extras - Makros - Visual Basic Editor" den VB-Editor öffnen, im linken Frame die Excel-Datei auswählen und "Einfügen - Modul" anklicken. Es wird ein neues Modul erzeugt, in das du den VB-Code eingeben bzw. reinkopieren und ändern kannst. Dieses Modul ist nun Bestandteil der betreffenden Excel-Datei.

    2. Das Makro in der "Persönlichen Arbeitsmappe" speichern und Excel-Datei vom Makro öffnen lassen:

      Wenn im VB-Editor im linken Frame die Mappe "PERSONL.XLS" angezeigt wird, dort in einem beliebigen Modul den VB-Code einfügen. Direkt nach der Zeile "Sub Auslesen2()" folgende Zeile einfügen:

      VB.NET-Quellcode

      1. Workbooks.Open Filename:="C:\Datei.xls"

      (anstelle von "C:\Datei.xls" den kompletten Pfad der Datei eingeben)

      Sonst in Excel "Extras - Makros - Aufzeichnen" anklicken, einen Makronamen vergeben (z. B. Auslesen2) und bei "speichern in:" "Persönliche Makroarbeitsmappe" auswählen. Die Aufzeichnung starten, über "Datei - Öffnen" die betreffende Datei öffnen und dann die Aufzeichnung beenden. Nun müsste im VB-Editor "PERSONL.XLS" vorhanden sein. Dort das soeben entstandene Modul (vermutlich "Modul1") aufrufen. Dort müsste nun ein Makro mit einer derartigen Zeile enthalten sein:

      VB.NET-Quellcode

      1. Workbooks.Open Filename:="C:\Datei.xls"

      Zwischen dieser Zeile und der Zeile "End Sub" den VB-Code einfügen (ohne "Sub …" und "End Sub").

      Nun kann man das Makro von Excel aus starten, egal, welche Excel-Datei gerade offen ist, jedoch nur an dem Rechner bzw. bei dem Benutzer, unter dem das Makro gespeichert wurde.

      Wenn die Excel-Datei aus mehreren Tabellen besteht, sollte man nach dem "Workbooks.Open"-Befehl noch folgendes eingeben, um sicherzugehen, dass das Makro auch in der richtigen Tabelle ausgeführt wird:

      VB.NET-Quellcode

      1. Sheets("Tabelle1").Select

      (wenn die betreffende Tabelle z. B. "Tabelle1" heißt)

    3. Das Makro außerhalb von Excel zu starten, ist sicher auch irgendwie möglich, jedoch weiß ich leider (noch) nicht wie.