Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1656to1660
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform Übernehmen

Userform Übernehmen
27.11.2018 09:26:50
Joern
Guten Morgen zusammen,
erst mal möchte ich mich für viele hilfreiche Themen und Anregungen bedanken, die hier im Forum erhältlich sind.
Ich beschäftige mich seit einiger Zeit mit VBA und liebe es einfach.
Nun habe ich allerdings, ein für mich schier unlösbares Problem und auch vorhandene Themen konnten leider bisher keinen Erfolg bringen.
Ich habe ein Worksheet in dem viele Maschinen mit internen Nummern und Maschinendaten gespeichert sind.
Um nun weitere Maschinen hinzufügen zu können habe ich eine Userform erstellt, welche die letzte vergebene Nummer sucht und die Eingaben in der Maske als neue hinzufügt.
Klappt super.
Nun werden die Maschinen allerdings jährlich geprüft. Diese Daten möchte ich hinzufügen.
Dazu gibt es eine weitere Userform.
Hier wird über die einzugebene Inventarnummer die Liste durchsucht und die Userform entsprechend gefüllt. Klappt
Mit der Option Daten Ändern werden die gesperrten Textboxen entsperrt und die Daten können geändert werden.
Klappt auch.
Nun zu meinem Problem:
Wie schaffe ich es, dass die eingegebenen Daten auch überschrieben werden und durch das Prüfdatum ergänzt werden - Mein Problem :roll:
Ich hoffe ihr könnt mir helfen. Hier ist mein verwendeter Code für die Suche:
Sub Suchen()
Dim Zelle As Range
With Worksheets("Geräteliste - Inventar")
For Each Zelle In .Range("B1:B" & Cells(Cells.Rows.Count, 2).End(xlUp).Row)
If Zelle = TBox_Inventar.Text Then
Prüfung.TBox_Nummer.Text = .Cells(Zelle.Row, 1)
Prüfung.TBox_Maschine.Text = .Cells(Zelle.Row, 3)
Prüfung.TBox_Serien.Text = .Cells(Zelle.Row, 4)
Prüfung.TBox_Inbetrieb.Text = .Cells(Zelle.Row, 5)
End If
Next
End With
End Sub

Jetzt die Frage wie ich die Daten in der jeweiligen Liste überschreiben und ergänzen kann?
'Daten übernehmen und ergänzen des Prüfdatums in Spalte F
Private Sub CButton_Enter_Click()
'Hier beginnt die Verzweiflung
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform Übernehmen
27.11.2018 09:47:46
Werner
Hallo Joern,
du könntest die Variablendeklaration
Dim Zelle As Range

aus deiner Sub "Suchen" löschen
Diese Variable dann in einem allgemeinen Modul, außerhalb einer Prozedur als Public deklarieren
Public Zelle As Range

Hier kannst du dann mit
Private Sub CButton_Enter_Click()
With Worksheets("Geräteliste - Inventar")
.cells(Zelle.row, 1) = Prüfung.TBox_Nummer.Text
End Sub

auf die Zeile der Fundzelle zugreifen und die Daten wieder zurückschreiben.
Gruß Werner
Anzeige
AW: Userform Übernehmen
27.11.2018 10:32:38
Joern
Hallo Werner,
vielen Dank für deinen Einsatz.
Leider funktioniert es so noch nicht und ich stehe echt auf dem Schlauch.
Variable habe ich entfernt und als Public gesetzt.
Bei der Übernahme hat er erst das End With gefordert aber nach End zeigt er nun einen Laufzeitfehler
Da eine Objektvariable oder With-Blockvariable nicht festgelegt ist
Gruß Joern
AW: Userform Übernehmen
27.11.2018 10:40:08
Werner
Hallo Joern,
sorry, das End With hatte ich vergessen.
Hast du denn die Public Variable auch in einem allegemeinen Modul außerhalb einer Prozedur deklariert?
Leg mal ein neues allgemeines Modul an.
In dieses Modul schreibst du
Public Zelle As Range

und sonst nichts.
Deine Datei kann ich im Moment leider nicht herunterladen, da ich hier im Moment keine .xlsm downloaden kann.
Gruß Werner
Anzeige
AW: Userform Übernehmen
27.11.2018 12:23:26
Joern
So Problem gelöst.
Danke Werner für den Anstoß in die richtige Richtung.
Alleine Die Variable zu entnehmen hat leider keinen Erfolg gebracht - Auch nicht im Public Modul.
Ich habe nach erneutem grübeln folgende Lösung aufgestellt:
(Sie ist vll nicht kurz und schön aber funktioniert)
  • 
    Private Sub CButton_Enter_Click()
    With Worksheets("Geräteliste - Inventar")
    For Each Zelle In .Range("B1:B" & Cells(Cells.Rows.Count, 2).End(xlUp).Row)
    If Zelle = TBox_Inventar.Text Then
    .Cells(Zelle.Row, 1) = Prüfung.TBox_Nummer.Text
    .Cells(Zelle.Row, 2) = Prüfung.TBox_Inventar.Text
    .Cells(Zelle.Row, 3) = Prüfung.TBox_Maschine.Text
    .Cells(Zelle.Row, 4) = Prüfung.TBox_Serien.Text
    .Cells(Zelle.Row, 5) = Prüfung.TBox_Inbetrieb.Text
    .Cells(Zelle.Row, 6) = Prüfung.CBox_Monat & CBox_Jahr
    End If
    Next
    End With
    Unload Me
    Prüfung.Show
    End Sub
    

  • Vielen Dank an Werner!
    Gruß Joern
    Anzeige
    ohne Schleife
    27.11.2018 22:30:19
    Werner
    Hallo Joern,
    hier ohne Schleife, mit Find:
    Private Sub CButton_Enter_Click()
    Dim strSuch As String, raFund As Range
    With Worksheets("Geräteliste - Inventar")
    Set raFund = .Columns(2).Find(what:=Me.TBox_Inventar, LookIn:=xlValues, lookat:=xlWhole)
    If Not raFund Is Nothing Then
    .Cells(raFund.Row, 1) = Me.TBox_Nummer
    .Cells(raFund.Row, 2) = Me.TBox_Inventar
    .Cells(raFund.Row, 3) = Me.TBox_Maschine.Text
    .Cells(raFund.Row, 4) = Me.TBox_Serien.Text
    .Cells(raFund.Row, 5) = Me.TBox_Inbetrieb.Text
    .Cells(raFund.Row, 6) = Me.CBox_Monat & CBox_Jahr
    Else
    MsgBox "Inventar " & Me.TBox_Inventar & " nicht vorhanden."
    End If
    End With
    Set raFund = Nothing
    Unload Me
    End Sub
    
    Gruß Werner
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige