Excel Tabelle durchsuchen, If Then, Select Case, vbYesNoCancel Hilfe ?(

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Stefan.

    Excel Tabelle durchsuchen, If Then, Select Case, vbYesNoCancel Hilfe ?(

    Kann mir evtl. jemand helfen, Bei folgendem Codes? Ich möchte das wenn der Button getrückt wird eine ExcelTabelle in Spalte "A", nach einem Wort durchsucht wird (in diesem Fall "Hallo"). Und wenn das Wort gefunden wurde eine Massage kommt mit der Auswahl Ja, Nein, Abbrechen. Bei der Auswahl Ja soll er eine MSG mit Ja wiedergeben, bei Nein - Nein , bei Abbrechen - Abbrechen.
    Soweit Funktioniert das ganze auch, aber mein Problem ist das er mir die MassageBox mit der Auswahl (JaNeinAbbrechen), nach dem ersten durchlauf nochmal anzeigt. Also Auswahl [ JaNeinAbbrechen ~ (zb. Ja) - MSG Ja - "und dann mein Problem" Auswahl JaNeinAbbrechen ~ (zb. Ja) - MSG Ja ] Ich bekomme es 2 mal angezeigt. vieleicht weiss jemand wo mein fehler ist? ?(

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    2. Dim XT As New Microsoft.Office.Interop.Excel.Application
    3. Dim txt_server As String
    4. Dim suche As String = "Hallo"
    5. Dim intZähler As Integer
    6. Try
    7. XT = CreateObject("excel.application") 'Excel Prozess erstellen
    8. XT.Application.Workbooks.Open("C:\produkte\test\test.xlsx") 'Pfad zur Excel Datei
    9. XT.Visible = True ' Excel sichtbar machen
    10. XT.Sheets("Tabelle1").Activate() ' Tabelle1 auswählen
    11. XT.Range("A1").Select() 'bei Spalte A Zeile 1 auswählen, anfangen
    12. Dim z As Long = XT.Sheets("Tabelle1").UsedRange.Rows.Count 'Tabelle1 Auswählen, bis zur letzten Zeile durchlaufen.
    13. For intZähler = 1 To z Step 1
    14. txt_server = XT.Range("A" & intZähler.ToString).Value() ' Zeilen in Spalte A durchlaufen.
    15. If suche = txt_server Then 'Wenn gesuchter Text der gleiche ist wie der Gefundene, dann ...
    16. Select Case MsgBox(TextBox4.Text & " ist bereits vorhanden.(Yes) Soll der Eintrag ersetzt werden? (No) Soll ein neuer Eintrag mit dem gleichen namen angelegt werden? (Cancel) Abbrechen.", vbQuestion + vbYesNoCancel, "Doppelter Eintrag") 'Frage wenn der Text schon vorhanden ist.
    17. Case vbYes
    18. MsgBox("Ja") 'Aussage bei ja.
    19. Case vbNo
    20. MsgBox("Nein") 'Aussage bei Nein.
    21. Case Else
    22. MsgBox("Abbrechen") 'Aussage bei Abbrechen.
    23. End Select
    24. End If
    25. Next
    26. Catch ex As Exception
    27. Finally
    28. XT.Application.Quit()
    29. End Try
    30. End Sub
    Du benötigst keine Schleife, wenn du Range.Find verwendest:

    VB.NET-Quellcode

    1. Dim XT As New Microsoft.Office.Interop.Excel.Application
    2. Dim WB = XT.Workbooks.Open ("c:\test.xls")
    3. Dim Cell = WB.Sheets("Tabelle1").Range("A:A").Find("Hallo")
    4. ' wenn gefunden ist Cell das Range-Objekt der gefundenen Zelle
    5. If Cell Is Nothing Then
    6. Debug.Print("nicht gefunden")
    7. Else
    8. Debug.Print ("gefunden in " & Cell.Address
    9. ' Hier kannst du die MessageBox-Abfrage platzieren und ggf. Cell überschreiben.
    10. End If
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Super Vielen Vielen Herzlichen Dank hat mir Super geholfen. :thumbsup: :thumbup:
    hab doch noch eine frage. Wie kann ich mit dem Cell Wert, eine die Zelle in der Spalte daneben auswählen? zum Bsp. wenn er den Begriff (Text) in A4 gefunden hat das ich dann in B4 schreiben kann? ?(

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Stefan“ ()

    Schön, dass es funktioniert.

    Vielleicht noch ein Nachtrag:
    Schau dir evtl. die Parameter zu .Find genauer an.
    Insbesonders LookAt, mit dem du Teilsuche oder exakte Suche einstellen kannst.
    Eine beliebte Fehlerquelle bei ähnlichen Strings.

    Wie kann ich mit dem Cell Wert, eine die Zelle in der Spalte daneben auswählen?
    Cell.Offset(0,1)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --