Office: UserForm mit den Funktionen: suchen, ändern, löschen

Helfe beim Thema UserForm mit den Funktionen: suchen, ändern, löschen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo *Smilie ich hab da mal ein Problem Ich bin noch ein zeimlicher Anfänger beim programmieren von VBA und stehe jetzt vor dem Problem das ich den... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von STA578, 11. Juli 2017.

  1. UserForm mit den Funktionen: suchen, ändern, löschen


    Hallo *Smilie

    ich hab da mal ein Problem

    Ich bin noch ein zeimlicher Anfänger beim programmieren von VBA und stehe jetzt vor dem Problem das ich den Fehler in meinem Code nicht finde.

    Es handelt sich um eine Userform, in der es die Buttons suchen, ändern und löschen gibt sowie eine ListBox, in der die gesuchten Ergebnisse angezeigt werden sollen und noch weitere 46 TextBoxen. Die TextBoxen sollen durch einen click in die ListBox befüllt werden. Meine ListBox zeigt jedoch nur 5 der 46 Spalter für die TextBox an. Die TextBoxen sollen befüllt werden, damit ich die Daten ändern oder löschen kann.

    Ich hoff das ich so weit verständlich?

    Das wäre mein Code:
    Leider klappt es mit dem Hochladen nicht :/


    Option Explicit
    Dim lngR As Long
    Dim Meine_Zeile As String
    Dim rngCell As Range


    Private Sub CommandButton_suchen_Click() ' Suchen

    ' Dim rngCell As Range ' Bei Option Explicit definiert
    Dim strFirst As String
    With Worksheets("Maschinenparkanalyse").Range("A:A")
    Me.ListBox1.Clear
    Set rngCell = .Find(Me.TextBoxX.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not rngCell Is Nothing Then
    strFirst = rngCell.Address
    Do
    With Me.ListBox1
    .ColumnCount = 8
    .AddItem
    .List(.ListCount - 1, 0) = rngCell.Value
    .List(.ListCount - 1, 1) = rngCell.Offset(0, 1).Value
    ' .List(.ListCount - 1, 2) = rngCell.Offset(0, 2).Value
    ' .List(.ListCount - 1, 3) = rngCell.Offset(0, 3).Value
    .List(.ListCount - 1, 4) = rngCell.Offset(0, 4).Value
    .List(.ListCount - 1, 5) = rngCell.Offset(0, 5).Value
    .List(.ListCount - 1, 6) = rngCell.Offset(0, 6).Value
    .List(.ListCount - 1, 7) = rngCell.Offset(0, 7).Value
    .List(.ListCount - 1, 8) = rngCell.Row

    .ColumnWidths = "5,5cm;5,3cm;0,01cm;0,01cm;0,87cm;0,87cm;0,87cm;0,87cm;0cm"
    End With
    Set rngCell = .FindNext(rngCell)
    Loop While Not rngCell Is Nothing And rngCell.Address strFirst
    Else
    MsgBox "Maschine nicht gefunden", 48
    End If
    End With
    End Sub



    Private Sub ListBox1_Click() ' ListBox
    ' Wenn auf die ListBox geckligt wird, somit eine Zeile ausgewählt wurde,
    ' sollen die TextBoxen befüllt werden (mehr TextBoxen wie spalten in der ListBox)

    ' Dim rngCell As Range ' in Option Explicit definiert
    Dim IntC As Integer ' Zähler für Textboxen
    Dim intSpalte As Integer
    Dim lngR As Long ' Listindex der gewählten Zeile in der Listbox

    With ListBox1
    If .ListCount = 0 Then Exit Sub ' wenn Listbox leer, Ausstieg
    If .List(.ListIndex, 0) = "" Then Exit Sub 'wenn in Spalte 1 nichts steht (und somit in der Listbox ganz vorne) dann beenden(nichts tun) wenn leere Zeile in Listbox gewählt, Ausstieg
    lngR = CLng(.List(.ListIndex, 8)) ' Zeilennummer des gewählten Datensatzes
    If lngR < 1 Then
    MsgBox lngR, , "KEINE DATEN!"
    Exit Sub
    End If
    Set rngCell = Nothing
    Meine_Zeile = Rows(Sheets("Maschinenparkanalyse").Cells(lngR, 1).Row).Address
    For IntC = 1 To 46
    '########################################
    'Diesr Block ist glaube ich mein Problem hier bekomme ich immer eine Fehlermeldung im Bezug auf das Controls
    ' Der Fehler mit dem Controls wieder holt sich auch bei dem Button ändern
    Dim objControl As Controls
    For Each objControl In Controls
    Select Case TypeName(objControl)
    Case "TextBox"
    objControl.Text = ""
    End Select
    Next
    '########################################
    Controls("TextBox" & IntC) = Sheets("Maschinenparkanalyse").Cells(lngR, IntC).Text
    Next
    End With
    TextBoxX.SetFocus
    End Sub


    Private Sub CommandButton_ändern_Click() ' Ändern
    ' Werte aus den Textfeldern die Werte in der Tabelle überschreiten
    Dim intAnzTeBo As Integer
    Dim durchsuchen, finden As Range
    For intAnzTeBo = 1 To 46 ' Textboxen 1 bis 46
    Cells(lngR, intAnzTeBo) = Controls("TextBox" & intAnzTeBo).Value
    ' 'was bedeutet diese Zeile???
    Next intAnzTeBo
    TextBoxX.SetFocus
    End Sub


    Private Sub CommandButton_löschen_Click() ' Löschen
    ' Werte in den Textboxen und die Zeile in der Tabelle löschen nach If tex = vbYes Then
    Dim tex As String
    tex = MsgBox(prompt:="Die Daten werden unwiederruflich gelöscht!" & vbCr & Chr(13) & _
    "Hinweis: Nach dem löschen, Suche neu starten!. ", Buttons:=vbYesNo + vbCritical, Title:="Warnung")
    If tex = vbNo Then Exit Sub
    Rows(lngR).Delete
    ' die Zeile funktionier auch nicht ich möchte sowohl die Ziele in der ListBox als auch in der Tabelle löschen?

    'In der Listbox löschen hat hierrüber funktioniert aber es wird nicht in der Tabelle gelöscht?
    ' Dim iRow As String
    ' With ListBox1
    ' If .ListIndex > -1 Then
    ' Tabelle1.Rows(.ListIndex + 2).Delete 'Zeile in ListBox löschen
    ' .RemoveItem .ListIndex
    ' End If
    ' End With
    End Sub




    Die Suchfunktion funktioniert
    Das Problem ist beim befüllen der TextBoxen, wie im Code beschrieben.

    Über eure Hilfe wär ich euch sehr Dankbar *Smilie


    Grüße und Danke schon mal

    Christina

    :)
     
    STA578, 11. Juli 2017
    #1
  2. Hajo_Zi
    Hajo_Zi Erfahrener User
    nur wenige schauen auf Deinen Rechner und sehen die Datei.
    Ich möchte gerne den Fehler im Original sehen.

    Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.

    Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.

    Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
    UserForm mit den Funktionen: suchen, ändern, löschen logo_hajo3.gif
     
    Hajo_Zi, 12. Juli 2017
    #2
  3. Hallo Hajo

    Schon mal Danke für die Bereitschaft

    Leider war es mir nicht möglich beim Arbeiten Dokumente Hochzuladen. Somit Leider erst jetzt.

    Also im Anhang das Dokument als Zip-Datei ich hoffe sie können es öffnen? Die Excel-Datei war leider zu groß.

    Wie gesagt die Suchfunktion und das Hinzufügen funktionieren soweit nur das ändern und löschen leider nicht.



    Danke für eure Hilfe!


    Christina
     
    STA578, 13. Juli 2017
    #3
  4. Hajo_Zi
    Hajo_Zi Erfahrener User

    UserForm mit den Funktionen: suchen, ändern, löschen

    Hallo Christina,

    ich kann Dir Leider nicht helfen. Da ich das was im ersten Beitrag steht nicht sehe.
    Ich kann keinen Eintrag in der Listbox auswählen.
    Vielleicht sieht es bei anderen anders aus?
     
    Hajo_Zi, 13. Juli 2017
    #4
  5. Hallo Christina,

    Du hast eine "Datenbank" in Excel aufgebaut.
    Leider wird diese in dem Zustand nicht richtig funktionieren!

    Verbundene Zellen --> weg damit!
    Leere Spalten --> weg damit!

    Dim direkt unterhalb der Sub, nicht innerhalb des Codes an verschiedenen Stellen.

    Dim durchsuchen, finden As Range --> nur finden wird deklariert!
    "durchsuchen" ist variant!

    Cells(lngR, intAnzTeBo) = Controls("TextBox" & intAnzTeBo).Value ---> 'lngR = 0

    Kann mich jetzt nicht weiter drum kümmern, weil ich keine Zeit mehr habe.

    Gruß
    Rainer
     
  6. Hallo Hajo, Hallo Rainer

    Danke für die Hinweise!

    Wenn ich nun die leeren und die verbundenen Zeilen heraus nehme welche weiteren Fehler habe ich noch im Code?

    Über weitere Hilfe wär ich euch sehr Dankbar!


    Gruß
    Christina
     
    STA578, 14. Juli 2017
    #6
  7. Hallo Christina,

    Textbox24 und Textbox101 fehlen.
    Diesen Code gegen deinen tauschen.

    Code:
    Wenn du die leeren Spalten löscht, müssen die Adressen für die Neueingabe und Änderung entsprechend angepasst werden!

    Für begabte Anfänger ist es einfach passenden Code im Netz zu finden; jedoch macht der Einbau in die eigene Datei oft Schwierigkeiten.
    Aber du bist auf einem guten Weg! *Smilie

    Von der blauen Farbe bekommt man Augenkrebs! *boah *Smilie

    Bau das erstmal ein, dann sehen wir weiter.

    Gruß
    Rainer
     
  8. UserForm mit den Funktionen: suchen, ändern, löschen

    Hallo Christina,

    du brauchst eine ID, um die einzelnen Maschinen zu identifizieren.
    Hast du schon selbst bemerkt: Katze, Katze2. Die ID könnte die Maschinennummer sein?
    Dann aber: Wie ist das mit den Stählen?
    Wie passt das überhaupt zusammen? Maschinen - Platz - Aufstelldaten und dann die Stähle?

    Wie geschrieben gibt es die TextBox24 nicht, stattdessen die ComboBox24!
    Deswegen kommt es zum Fehler: Code:
    Füge noch ein Case "ComboBox" ein. Dazu müsstest du aber die ComboBox umbenennen und nicht "ComboBox_Maschinenart" benennen.
    Code:
    Bei Click in die Listbox kommt schon die erste Fehlermeldung.
    Das Suchergebnis lässt sich nicht in die UF übertragen. S.o.

    Wie weit bist du mit den Änderungen (leere Spalten)?
    Dann lade doch die geänderte Datei bitte hoch.

    Gruß
    Rainer
     
  9. Hallo Rainer,

    Ich hab deinen Code jetzt mal soweit eingebaut und es funktioniert so weit, dass Daten in die TextBoxen übertragen werden. Nur leider verschoben? Ich vermute es liegt am OptionButton ich habe nur leider keine Idee wie ich diesen richtig einbauen muss?

    TextBox 24 und 47 geben die Auswahl der ComandBoxen(Nummer 48 und 49) wieder. Jedoch nicht umgedreht, d.h. wenn ich eine Zeile ausgewählt habe wird es nicht in der ComboBox angezeigt?


    Die Überschriften der Spalten war soweit vorgegeben, darauf habe ich nicht wirklich einen Einfluss.

    Was genau meinen Sie mit ich brauch eine ID für die Maschinen, ist dies wichtig fürs Programmieren oder allgemein für die Datenbank?


    Vielen Dank für alles! Sie sind mir eine große Hilfe! Ich wollt schon aufgeben *boah

    Grüße Christina
     
    STA578, 17. Juli 2017
    #9
  10. Hi Christina,

    ich habe mir Deine Datei zwar nicht angesehen, aber wenn ich schon lese "TextBox_24 oder dergleichenh, dann rollen sich mir die Fußnägel nach oben. Damit kann kein Mensch was anfangen. Es ist immer besser sowohl Variablen, Konstanten als auch Objekten "sprechende" Namen zu vergeben. Eine Textbox zur Angabe des Vornamens kann man z. Bsp. txtVorname nennen. Dadurch wird es auch für Fremde leichter sich in Deinem Code zurecht zu finden.
    Mit Deiner aktuellen Namensvergabe wird jeder gezwungen, sich durch Deine Objektliste zu klicken und zu schauen, wofür denn welches Objekt überhaupt gut ist... gruselig, zeitraubend...
     
  11. Hallo Christina,
    Danke für die Arbeit an der Datei. Und für das gemilderte Blau. *Smilie *Smilie *Smilie
    Hier im Forum san ma per du!
    Klar, weil jetzt die leeren Spalten fehlen.
    ID=Identifikationsnummer. Damit kann man einen Datensatz eindeutig identifizieren. Da böte sich die Maschinennummer an.
    Du hast 3 x Huhn. Wie erkennst du, welches Huhn gemeint ist bei 6 Spalten?
    Deshalb eine ID.
    Aber wie ist das bei den Stählen? Die haben keine Maschinennummer.
    ???

    Kann eine Maschine an mehreren Standorten stehen? Wohl nicht.
    Hund und Uhu aber schon?!

    Welche Felder bleiben bei Änderungen unverändert?
    Kann eine Maschine die Maschinenart wechseln?
    Werden auch die OptionButton geändert?

    Jetzt hast du eine Textbox24 angelegt, aber die ComboBox24 = ComboBox48 -> geschickt gemacht! *Smilie

    Ralf (R J) hat natürlich Recht mit seinen Bemerkungen und in der Tat, es erleichtert eine Hilfestellung.
    Es gibt aber auch die Meinung, dass (gerade bei so vielen Controls) dein Vorgehen vertretbar ist.
    Jetzt brauchst du aber nicht die Datei zu ändern.
    Von der Bedienung her wäre es schon, wenn die Textfelder in einer (logischen) Reihenfolge angesprungen werden könnten.
    Du hast das Form in mehrere Frames unterteilt.
    In welcher Reihenfolge werden die Daten eingegeben?
    Stichwort "Aktivierreihenfolge" -> Menü Ansicht.

    Beantworte bitte die Fragen, damit es weitergeht.

    Gruß
    Rainer
     
  12. Hallo Ralf, Hallo Rainer,

    Ja Ralf du hast Recht ! Ich hatte es auch so am Anfang bin dann aber leider bei "For intC = 1 to 47" gescheitert weil ich davon ausgegangen bin das geht nur wenn die TextBoxen nummeriert sind? Ich hab dann die TextBox für Spalte "A" 1 genannt und so weiter...

    "Klar, weil jetzt die leeren Spalten fehlen"
    Das verstehe ich ehrlich gesagt noch nicht so richtig...?

    Zu den Stählen...
    Dies hängt damit zusammen, dass unterschiedliche Toleranzen bei unterschiedlichen Stählen und Fertigungsverfahren mit der jeweiligen Maschine erreicht werden können und diese werden in der Tabelle eingetragen.

    Ich denke dann ist der Maschinentyp meine ID, da es von jedem Hersteller die Maschine in unterscheidlichen Typen gibt. Und jeder Typ nur einmal aufgeführt wird. Somit kann ein Maschinentyp auch in mehreren Werken stehen.
    Als Beispiel das Huhn: es gibt 3 mal Huhn und eins ist schwarz, eins weiß und eins braun... und die Farben sind der Typ. Ich hoffe es ist verständlich? Und n schwarzes Huhn gibt es sowohl im Standort 1 als auch im Standort 2.

    Nein die OptionButton ändern sich nicht bei einer Änderung... Der Standort könnte sich ändern und eigentlich alle anderen TextBoxend wenn es einen Umbau gibt außer Hersteller und Typ.

    Ich habe theoretisch keine Reihenfolge vorgesehen. Warum brauch ich diese ? Wenn es eine Reihenfolge geben soll würde ich gerne die Reihenfolge nach den Spalten machen, das heißt zuerst der Frame mit Allgemeine, dann Aufstelldaten... und als letztes die Stähle. Also nach der Nummerrierung der TextBoxend.

    Danke für die Mühen !

    Grüße

    Christina
     
    STA578, 17. Juli 2017
    #12
  13. UserForm mit den Funktionen: suchen, ändern, löschen

    Hallo Christina,

    Danke für die Erläuterungen. Ich hatte ähnliches angenommen.
    Es geht also um Bearbeitungsmaschinen.
    Die Spaltenangaben müssen für Eingabe und Änderung im Code angepasst werden.

    Nachfrage zu Huhn:
    Huhn schwarz Standort 1 und Standort 2?
    Die OptionButton lassen immer nur EINE Auswahl zu! 1 oder 2 oder 3 oder 4!

    Somit muss Huhn 2 x eingetragen werden!

    Dann ist Typ aber nicht mehr einmalig, also keine ID.
    Warum kann es nicht die MaschNummer sein?

    Eine Reihenfolge hast du festgelegt! Nur nicht umgesetzt!!!
    Deine Boxen werden mehr oder minder willkürlich angesprungen.
    Ist eher ein Tanz durch das UF. *Smilie

    Ich habe das jetzt in der anhängenden Datei geändert.

    Schau mal, ob es passt.

    Gruß
    Rainer
     
  14. Hallo Rainer

    Ja es funktioniert *Smilie *Smilie

    Richtig hammer vielen vielen Dank!

    Grüße Christina
     
    STA578, 18. Juli 2017
    #14
  15. Hallo Christina,

    Danke für die Rückmeldung.
    Ist das jetzt erledigt oder gibt es noch Verbesserungsbedarf?

    Gruß
    Rainer
     
Thema:

UserForm mit den Funktionen: suchen, ändern, löschen

Die Seite wird geladen...
  1. UserForm mit den Funktionen: suchen, ändern, löschen - Similar Threads - UserForm Funktionen ändern

  2. Userform Login Benutzername in Zelle schreiben

    in Microsoft Excel Hilfe
    Userform Login Benutzername in Zelle schreiben: Hallo mal wieder ins Forum, ich habe mir nach einem Video ein Login nachgebaut. Das funktioniert auch einwandfrei. Hier der Code: Private Sub bttnAnmelden_MouseDown(ByVal Button As Integer, ByVal...
  3. Datum in Userform formatieren

    in Microsoft Word Hilfe
    Datum in Userform formatieren: Hallo! Ich habe folgende Herausforderung: Word 365. In einer Userform gibt es zwei Textboxen (TB_Datum und TB_Datum für Termin) In die Textbox TB_Datum soll ein Datum eingetragen werden können....
  4. UserForm zum bearbeiten von Tabellen und speichern

    in Microsoft Excel Hilfe
    UserForm zum bearbeiten von Tabellen und speichern: Guten Tag Ich habe leider ein Problem, das mich zur Verzweiflung bringt. Vielleicht findet hier jemand einen Lösung für mein Problem. Ich bekommen leider einen Laufzeitfehler '1004'. Zur...
  5. VBA Code Tabellenblatt kopieren und UserForm

    in Microsoft Excel Hilfe
    VBA Code Tabellenblatt kopieren und UserForm: Hallo, ich hoffe mir kann jemand helfen. Schon mal vielen Dank für die Unterstützung. Folgende Thematik: In dem Blatt 1 ist ein ComandButton. Mit Klick soll über VBA folgendes abgefragt...
  6. Suche-Funktion in UserForm mit Stichwortsuche und Weitersuchen

    in Microsoft Excel Hilfe
    Suche-Funktion in UserForm mit Stichwortsuche und Weitersuchen: Einen wunderschönen guten Tag liebe VBA-Spezialisten, ich brauche mal wieder eure fachliche Hilfe. Ich arbeite gerade an einer Suchfunktion und komme in der Erweiterung des Codes nicht weiter....
  7. Zeichnen Funktion auf Userform

    in Microsoft Excel Hilfe
    Zeichnen Funktion auf Userform: Hallo, mich beschäftigt eine Frage. Ist es möglich auf eine Userform ein Grafikobjekt einzubinden in dem man wie im Paint von Microsoft Linien zeichnen kann? Gedacht als Unterschriftenfeld auf...
  8. Kommentar funktion

    in Microsoft Excel Hilfe
    Kommentar funktion: Ein freundliches Hallo an alle, ich habe eine Userform mit mehreren Textboxen. In einer dieser Textboxen hat man die Möglichkeit ein Kommentar hinzuzufügen, welches dann auch so in Excel...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden