Einen bestimmten Wert in einer VBA UserForm suchen und dann zusätzliche Werte in dieselbe Zeile erfassen

  • Excel

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von Johanne.

    Du kannst die Zelle aber auch gleich anspringen anstatt zu markieren.

    Visual Basic-Quellcode

    1. Worksheets("Inventar").Activate
    2. c.Select

    Johanne schrieb:

    Würde es gehen, dass man nach Schließen des Fenster (durch drücken des Button "schließen") die Markierung aufhebt?
    Ich würde das eher ins Workbook_Open-Event packen.
    Im Codebereich von ThisWorkbook bzw. DieseArbeitsmappe

    Visual Basic-Quellcode

    1. Private Sub Workbook_Open()
    2. Worksheets("Inventar").UsedRange.Interior.Color=RGB(255,255,255)
    3. End Sub

    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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

    Jetzt hast du mich verloren.
    mein Quellcode sieht so aus:

    Spoiler anzeigen

    Visual Basic-Quellcode

    1. Sub Button_Suchen_Click()
    2. 'Eingaben in der TextBox_Inventarnummer finden
    3. Dim c As Range, ws As Worksheet
    4. Set ws = Worksheets("Inventar")
    5. Set c = ws.Range("A:A").Find(TextBox_Inventarnummer.Text, LookIn:=xlValues, LookAt:=xlWhole)
    6. If c Is Nothing Then
    7. MsgBox "nicht gefunden"
    8. Else
    9. MsgBox "Wert " & TextBox_Inventarnummer.Text & " gefunden in Zelle " & c.Address
    10. End If
    11. Worksheets("Inventar").UsedRange.Interior.Color = RGB(255, 255, 255)
    12. c.Interior.Color = RGB(255, 255, 0)
    13. End Sub


    Wenn ich nun deinen Code

    Visual Basic-Quellcode

    1. Worksheets("Inventar").Activate
    2. c.Select
    hinter / anstelle von Set ws = workSheets("Inventar") setze, kommt folgende Fehlermeldung:
    Laufzeitfehler '424': Objekt erforderlich.

    Das war an der falschen Stelle eingefügt, oder?
    -----------------------------------------------------------------

    Habe Zeile 13 + 14 aus dem Spoiler nun so verändert:

    Visual Basic-Quellcode

    1. Worksheets("Inventar").Activate
    2. c.Select


    und dann bleibt die Markierung bestehen.

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

    Visual Basic-Quellcode

    1. ​Sub Button_Suchen_Click()
    2. 'Eingaben in der TextBox_Inventarnummer finden
    3. Dim c As Range, ws As Worksheet
    4. Set ws = Worksheets("Inventar")
    5. ws.UsedRange.Interior.Color = RGB(255, 255, 255)
    6. Set c = ws.Range("A:A").Find(TextBox_Inventarnummer.Text, LookIn:=xlValues, LookAt:=xlWhole)
    7. If c Is Nothing Then
    8. MsgBox "nicht gefunden"
    9. Else
    10. 'MsgBox "Wert " & TextBox_Inventarnummer.Text & " gefunden in Zelle " & c.Address
    11. c.Interior.Color = RGB(255, 255, 0)
    12. ws.Activate
    13. c.Select
    14. End If
    15. End Sub
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ich habe Deinen Quellcode

    Visual Basic-Quellcode

    1. Private Sub Workbook_Open()
    2. Worksheets("Inventar").UsedRange.Interior.Color=RGB(255,255,255)
    3. End Sub


    ins Workbook_Open-Event gepackt und auch deinen Quellcode ("von gerade" Post 23) in meinen Übernommen.
    Leider bleibt die Markierung noch bestehen, bis ich erneut suche.
    Das Event wird gefeiert, wenn das Workbook geöffnet wird.
    Ob es gefeuert wird, kannst du testen, wenn du eine Stop-Anweisung einfügst.

    Visual Basic-Quellcode

    1. Private Sub Workbook_Open()
    2. Stop
    3. Worksheets("Inventar").UsedRange.Interior.Color=RGB(255,255,255)
    4. End Sub

    Dann müsste sofort nach dem Öffnen der Debugger aufgehen und das Programm an der Stelle stehen bleiben.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Guten morgen,

    ich habe das "Stop" wie beschrieben eingefügt, aber die Markierung bleibt dennoch (und geht erst mit der nächsten Suche weg.)

    (Das heißt nun, dass es nicht "gefeuert" wurde?)

    Der Debugger geht auch nicht auf.
    Ich habe auch noch mal überprüft, ob sich da ein Schreibfehler eingeschlichen hat oder ob ich es an der falschen Stelle eingefügt habe, aber beides kann ich verneinen.
    Guten Morgen,
    habe heute morgen die Eintragungen und Funktionen überprüft.

    1. Am Freitag hatte ich die Arbeitsmappe nicht komplett geschlossen, daher konnte es nicht funktionieren.
    • Heute morgen habe ich die Arbeitsmappe mehrmals geschlossen und auch wieder geöffnet und siehe da, es ging.
    • Den Code hatte ich vorher richtig in der Arbeitsmappe kopiert.
    2.

    Visual Basic-Quellcode

    1. Private Sub Workbook_Open()
    2. Stop
    3. Worksheets("Inventar").UsedRange.Interior.Color = RGB(255, 255, 255)
    4. End Sub


    Mit dem Stop, macht er was er soll: stehenbleiben.
    Wenn ich das Stop vor das

    End Sub

    setze, dann nimmt er die Markierung beim Start weg und bleibt dann stehen. (So wie er soll)

    Aber wenn ich mit der Aussonderungsmaske das Datum suche, passiert folgendes:
    • wenn kein Datum vorhanden, dann kommt die MsgBox mit: "nicht gefunden"
    • wenn vorhanden, findet er das Datum und markiert es
    -> wie gewünscht.

    Wenn ich alles eingetragen habe und den Button Schließen drücke, bleibt die Markierung weiterhin bestehen, sie geht er mit der nächsten "Suche" weg.

    Vielleicht kann man die Markierung ja mit "schließen" der Maske löschen, also dann wenn ich den Button schließen drücke.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Vielleicht kann man die Markierung ja mit "schließen" der Maske löschen, also dann wenn ich den Button schließen drücke.


    Dafür habe ich eine Lösung gefunden.

    Ich habe deine Codezeile:

    Visual Basic-Quellcode

    1. Worksheets("Inventar").UsedRange.Interior.Color = RGB(255, 255, 255)


    hier:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Private Sub Button_Schließen_Click()
    3. 'Eingabefenster schließen
    4. Unload Aussonderungs_Maske
    5. 'Markierung löschen
    6. Worksheets("Inventar").UsedRange.Interior.Color = RGB(255, 255, 255)
    7. End Sub

    eingefügt und wenn ich nun auf den Button Schließen drücke, geht auch die Markierung weg.
    [So wollte ich es ja haben.]

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