Windows Form TextBox-Eingaben nach definierten Zellen in Excel übertragen

  • Excel

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von riceterre.

    Windows Form TextBox-Eingaben nach definierten Zellen in Excel übertragen

    Hallo,

    ich habe ein Problem wo ich im Moment nicht weiterkomme. Folgende Aufgabe will ich erledigen:
    Über eine Windows Forms sollen 2 unterschiedlichen TextBox-Eingaben, nämlich Begriff (Column A) und Definition (Column B), in eine Excel-Tabelle übertragen werden.
    Zu jedem Begriff, kann es unterschiedliche Definitionen geben, die dann die Reihe nach eingetragen werden sollen.

    Bspl: Begriff 1 (Zelle A1); Definition 1 (Zelle B1) und weitere Definitionen zum Begriff 1 sollen B2, B3, .....Bn belegen

    Also sobald der User einen Begriff überträgt, soll erstmal danch in der Spalte A gesucht werden und dann die Definition eingetragen.

    Das Übertragen funzt bei mir aber die Definitionen werden bei mir immer in die erste Row geschrieben -.-

    hier mein Code:

    Quellcode

    1. Dim ColumnNumber As Integer = 1
    2. Dim RowNumber As Integer = 1
    3. Dim currentFind As Excel.Range = Nothing
    4. Dim Test As Excel.Range = oSheet.Range("A1", "A300")
    5.  
    6. currentFind = Test.Find(Begriff.Text, ,
    7. Excel.XlFindLookIn.xlValues,
    8. Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)
    9. If currentFind IsNot Nothing Then
    10. For Each xCell In oSheet.Rows(1).cells
    11. If xCell.Value = "" And currentFind(ColumnNumber, RowNumber).Value <> "" Then
    12. xCell.Value = Definition.Text
    13. Exit For
    14. End If
    15. Next
    16. End If
    17. If currentFind(ColumnNumber, RowNumber).Value Is Nothing Then
    18. For Each xCell In oSheet.Columns(1).cells
    19. If xCell.Value = "" Then
    20. xCell.Value = Begriff.Text
    21. xCell.Offset(0, 1).Value = Definition.Text
    22. Exit For
    23. End If
    24. Next
    25. End If


    vielleicht ist meine Heransweise falsch ?
    Danke und Gruß,
    Das Übertragen funzt bei mir aber die Definitionen werden bei mir immer in die erste Row geschrieben -.-


    Versteh ich nicht.

    Wenn ich das richtig lese, dann durchsuchst du die 2 Spalte und schreibst Definition.Text eine rechts daneben?

    edit:

    Ich würde das mit 2 verschachtelten Schleifen machen.

    VB.NET-Quellcode

    1. For i as integer = 0 to Row.count
    2. For ii as Integer = 0 to Column.count
    3. 'Suche zuerst nach unten, ob Begriff vorhanden (Falls ja suche freie Celle nach rechts), falls nicht neuen Begriff mit Definitionen anlegen.
    4. next
    5. next
    In Arbeit...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „vico255“ ()

    Hi Vico,

    ich durchsuche die Spalte 1 mit den Begriffen, also Column A und die Definition wird in Spalte 2, also Column B, eingetragen.

    Bei mir ist das im Moment so, dass alle Definitionen der Begriffen die gesucht und gefunden werden, werden nicht in der selben Reihe mit dem Begriff eingetragen sondern in die erste Reihe.

    Bspl:

    A1 (Begriff)
    A2 (Definition)
    B3 (problematik)
    C3
    B1
    B2
    B3 (gewünscht)

    C1
    C2
    C3





    Deshalb die geschachtelte Schleife.

    VBA hab ich leider zu lange nicht mehr angefasst :thumbsup:

    Du suchst quasi erst nach unten deinen Begriff und wenn du da einen Treffer hast, suchst du nach rechts deine nächste freie Zelle.



    VB.NET-Quellcode

    1. For i as integer = 0 to Row.count
    2. For ii as Integer = 0 to Column.count
    3. xCell.Offset(i, ii).Value = Definition.Text

    edit 2

    VB.NET-Quellcode

    1. Dim i, ii As Integer
    2. For r = 1 To 5
    3. If Cells(r, 1).Value = "b" Then 'Begriffe
    4. For c = 1 To 8
    5. If Worksheets("Tabelle1").Cells(r, c).Value = "" Then
    6. Worksheets("Tabelle1").Cells(r, c).Value = "Hallo"
    7. Exit For
    8. End If
    9. Next
    10. End If
    11. Next


    Hab es mal so gemacht
    In Arbeit...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „vico255“ ()

    Danke für deine Antwort.
    Dein Vorschlag lässt sich bei mir schwer einbauen. Zumindest ich kriege nicht das gewünschte Ergebnis...hmm

    Über .Find wird in der Spalte A nach dem Begriff gesucht. Falls der Begriff nicht gefunden wird, legt er einen neuen und mit dem Offset nach rechts wird die Definition abgelegt.

    VB.NET-Quellcode

    1. If currentFind(ColumnNumber, RowNumber).Value Is Nothing Then
    2. For Each xCell In oSheet.Columns(1).cells
    3. If xCell.Value = "" Then
    4. xCell.Value = Begriff.Text
    5. xCell.Offset(0, 1).Value = Definition.Text
    6. Exit For
    7. End If


    Falls der Begriff gefunden wird:

    VB.NET-Quellcode

    1. If currentFind(ColumnNumber, RowNumber).Value Is Nothing Then
    2. For Each xCell In oSheet.Columns(1).cells
    3. If xCell.Value = "" Then
    4. xCell.Value = Begriff.Text
    5. xCell.Offset(0, 1).Value = Definition.Text
    6. Exit For
    7. End If
    8. Next
    9. End If


    Genau hier fehlt etwas .... was denkst du?
    Hi,

    der umgekehrte Weg habe ich mir einfacher vorgestellt :-0
    Die eingetragenen Definitionen zu einem sollen per Suche nach dem Begriff in eine Textbox geschrieben werden.
    Mit einer geschachlteten Schleife und
    textbox. Text =Worksheets("Tabelle1").Cells(r, c).Value kriege ich nur den ersten Wert der Reihe....

    Bitte um Anstoß

    VB.NET-Quellcode

    1. Dim r, c As Integer
    2. Dim SuchStr As String
    3. For r = 1 To 5
    4. If Cells(r, 1).Value = "c" Then 'Begriffe
    5. For c = 2 To 8
    6. If Worksheets("Tabelle1").Cells(r, c).Value = "" Then
    7. MsgBox (SuchStr)
    8. Exit For
    9. End If
    10. If Len(SuchStr) = 0 Then
    11. SuchStr = Worksheets("Tabelle1").Cells(r, c).Value
    12. Else
    13. SuchStr = SuchStr & ", " & Worksheets("Tabelle1").Cells(r, c).Value
    14. End If
    15. Next
    16. End If
    17. Next


    Sowas? Du suchst nach dem Begriff und bei einem Treffer sucht er solange nach rechts bis eine leere Zelle kommt. Und das Ergebnis speichert er in Suchstr.
    In Arbeit...

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