Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1320to1324
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

Probleme mit Userform

Probleme mit Userform
17.07.2013 15:14:03
Christian
Hallo liebe Community,
ich habe ein kleines VBA-Problem.
Und zwar habe ich ein Userform erstellt, welches durch einen Button im aktiven Arbeitsblatt gestartet werden kann. Jetzt fragt das Userform verschiedene Angaben vom Anwender ab (Materialnummern, Artikelbezeichnungen, Mengen usw..), die dann in die letzte Zeile einer Tabelle (auf dem aktiven Arbeitsblatt) eingtragen werden sollen.
Das Userform enthält noch Informationen, die bei der Eingabe helfen, deshalb kein direktes Eintragen in die Tabelle.
Jetzt bastel ich schon den halben Tag an dem Code, leider bekomme ich bei der Bestätigung (diese soll das Übertragen auslösen) des Userforms immer folgende Fehlermeldung:
Laufzeitfehler 1004 - Anwendungs- oder objektdefinierter Fehler
Hab mich schon durch's Forum gewühlt, aber leider keine Lösung gefunden.
Es ist sicher nix großes, hatte den Code schon mal in nem anderen Workbook verwendet und da funktioniert er.
Vielen Dank für Eure Hilfe!
  • 
    Private Sub CommandButton1_Click()
    Dim z As Variant
    If TextBox_MatNr.Value = "" Or TextBox_MatBez.Value = "" Or ComboBox_Disp.Value = "" Or  _
    ComboBox_Rekla.Value = "" Or TextBox_SAPBestand.Value = "" Then
    MsgBox ("Bitte füllen Sie alle Pflichtfelder aus."), vbCritical
    End If
    If TextBox_MatNr.Value  "" And TextBox_MatBez.Value  "" And ComboBox_Disp.Value  "" And    _
    _
    _
    ComboBox_Rekla.Value  "" And TextBox_SAPBestand.Value  "" Then
    z = ThisWorkbook.Worksheets("Gesamtübersicht").Cells(12, 3).End(xlDown).Row + 1
    'Werte in letzte Zeile der Tabelle schreiben
    ThisWorkbook.Sheets("Gesamtübersicht").Cells(z, 4) = TextBox_MatBez (--> hier kommt der Fehler)
    ThisWorkbook.Sheets("Gesamtübersicht").Cells(z, 5) = ComboBox_Disp
    ThisWorkbook.Sheets("Gesamtübersicht").Cells(z, 6) = ComboBox_Rekla
    ThisWorkbook.Sheets("Gesamtübersicht").Cells(z, 7) = TextBox_SAPBestand
    ThisWorkbook.Sheets("Gesamtübersicht").Cells(z, 14) = TextBox_Bem
    Unload Me
    End If
    End Sub
    

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Probleme mit Userform
    17.07.2013 15:27:04
    Klaus
    Hi,
    der Code sieht auf den ersten Blick valide aus.
    Gibt es denn eine TextBox_MatBez auf der Userform? Nicht dass die anders heisst.
    z müsste gültig sein, sonst käme der Fehler schon eine Zeile früher.
    Ich rate dir, in der Userform die Elemente mit "Me." zu referenzieren. Dann kannst du die korrekte Schreibweise aus dem IntelliSense nehmen und vermeidest Tippfehler.
    Für eine genaue Analyse müsstest du die Datei laden.
    Grüße,
    Klaus M.vdT.

    AW: Probleme mit Userform
    17.07.2013 15:37:50
    Christian
    Hallo Klaus,
    danke für die Antwort.
    Habe mir jetzt mit der IntelliSense-Funktion die Textboxennamen geholt.
    Leider kommt immer noch der gleiche Fehler.
    Kann es sein, dass es irgendwas mit den eingegebenen Werten der Userforms zu tun hat?
    Es handelt sich um 10-stellige Nummern; Nach-, Vorname; Materialbezeichnungen usw.
    Danke für jede Hilfe.

    Anzeige
    AW: Probleme mit Userform
    17.07.2013 15:40:13
    Hajo_Zi
    ich hätte angenommen das Problem ist Du willst in der Combobox was anzeigen was nicht in der Liste steht? Aber dann habe ich das wohl falsch interpretiert.

    AW: Probleme mit Userform
    17.07.2013 15:46:00
    Hajo_Zi
    das war der falsche Beitrag.

    AW: Probleme mit Userform
    17.07.2013 15:47:22
    Klaus
    Hi Christian,
    meine Glaskugel ist leider defekt. Lad doch bitte die Datei hoch.
    Grüße,
    Klaus M.vdT.
    Standarddialog vorweg (100 mal geführt)
    Ich kann die Datei aber nicht hochladen, weil sie sensible Daten enthält
    lösche alle Spalten und Zeilen die für das Problem nicht relevant sind. Ersetze dann noch übrige Namen durch "Max Mustermann1" bis "Max Mustermann99" und Zahlen durch Zufallszahlen. Texte meinetwegen durch Loren Ipsum.

    Anzeige
    AW: Probleme mit Userform
    17.07.2013 16:16:25
    Christian
    Hallo Klaus,
    habe das Problem jetzt anderweitig gelöst bekommen:
  • iLetzte = Cells(Rows.Count, 2).End(xlUp).Row + 1
    Range("C" & iLetzte).Value = Me.TextBox_MatNr.Value
    Range("D" & iLetzte).Value = Me.TextBox_MatBez.Value
    Range("E" & iLetzte).Value = Me.ComboBox_Disp.Value
    Range("F" & iLetzte).Value = Me.ComboBox_Rekla.Value
    Range("G" & iLetzte).Value = Me.TextBox_SAPBestand.Value
    Range("L" & iLetzte).Value = Me.TextBox_Bem.Value

  • So funktioniert es komischerweise und erfüllt auch seinen Zweck.
    Hätte nun aber noch eine andere Frage:
    Ich lasse die Daten der Tabelle nun in bestimmte Felder auf ein Formular eintragen (anderes Tabellenblatt).
    Das Übertragen soll per ButtonClick funktionieren.
    Code sieht folgendermaßen aus:
  • 
    Private Sub CommandButton1_Click()
    Dim wsKopie As Worksheet, wsBasis As Worksheet, iLetzte As Long
    Dim wbKopie As Workbook
    Set wsBasis = ActiveSheet
    Set wsKopie = ActiveWorkbook.Sheets("Name TB")
    iLetzte = wsBasis.Cells(wsBasis.Rows.Count, 1).End(xlUp).Row
    wsKopie.Range("C5").Value = wsBasis.Range("A" & iLetzte)
    wsKopie.Range("C6").Value = wsBasis.Range("B" & iLetzte)
    wsKopie.Range("C7").Value = wsBasis.Range("C" & iLetzte)
    wsKopie.Range("C8").Value = wsBasis.Range("D" & iLetzte)
    wsKopie.Range("B16").Value = wsBasis.Range("E" & iLetzte)
    wsKopie.Range("C16").Value = wsBasis.Range("F" & iLetzte)
    wsKopie.Range("D16").Value = wsBasis.Range("G" & iLetzte)
    wsKopie.Range("E16").Value = wsBasis.Range("H" & iLetzte)
    wsKopie.Range("F16").Value = wsBasis.Range("I" & iLetzte)
    wsKopie.Range("G16").Value = wsBasis.Range("J" & iLetzte)
    wsKopie.Range("C23").Value = wsBasis.Range("K" & iLetzte)
    wsKopie.Range("C29").Value = wsBasis.Range("L" & iLetzte)
    wsKopie.Range("C30").Value = wsBasis.Range("M" & iLetzte)
    wsKopie.Range("C31").Value = wsBasis.Range("N" & iLetzte)
    wsKopie.Range("C33:G35").Value = wsBasis.Range("O" & iLetzte)
    wsKopie.Range("C41").Value = wsBasis.Range("P" & iLetzte)
    wsKopie.Range("C42").Value = wsBasis.Range("Q" & iLetzte)
    wsKopie.Range("C43").Value = wsBasis.Range("R" & iLetzte)
    wsKopie.Range("C44").Value = wsBasis.Range("S" & iLetzte)
    wsKopie.Range("C45").Value = wsBasis.Range("T" & iLetzte)
    wsKopie.Range("C46").Value = wsBasis.Range("U" & iLetzte)
    wsKopie.Range("C26").Value = wsBasis.Range("V" & iLetzte)
    wsKopie.Range("C27").Value = wsBasis.Range("W" & iLetzte)
    ThisWorkbook.Save
    Worksheets("Name TB").PrintOut
    ThisWorkbook.Close False
    End Sub
    

  • Jetzt zieht mir der Code ja immer die letzte Zeile und setzt es an die entsprechende Stelle im Formular ein.
    Fällt jemanden eine Lösung ein, wie ich anstatt die letzte Zeile zu nehmen die Zeile variabel einstellen kann? Am elegantesten wäre natürlich eine MsgBox o.ä., in der die gewünschte Zeile aus der Tabelle zum übertragen angegeben werden kann.
    Vielen Dank für Eure Hilfe.
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige