Clever-Excel-Forum

Normale Version: [UserForm] Daten aus Eingabemaske in Tabelle Übertragen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.

Andi91

Hallo miteinander,

also Excel-Frischling bin ich nicht. Aber was VBA angeht, da steig ich nicht durch und brauch eure Hilfe.

Ich habe eine Tabelle bei der verschiedenen Werte aus einer UserForm mit Textboxen, die in eine Tabelle übertragen werden sollen:

Mit meinen Codevarianten bekam ich erst einen Überlaufehler und mit diesem Code hier einen Objektfehler


Code:
Private Sub Button_Codierung_hinzufuegen_und_neu_Click()
'letzte freie Zeile suchen, Daten eintragen und Eingabemaske leeren
 
   Dim letztefreieZeile As String
   
   letztefreieZeile = Sheets("Historie").Cells(RowsCount, 1).End(xlUp).Row + 1
   
'Werte eintragen und Masken leeren

   Cells(letztefreieZeile, 4).Value = Text_Codierung_Byte.Value
   Cells(letztefreieZeile, 5).Value = Text_Codierung_Bit.Value
   Cells(letztefreieZeile, 6).Value = Text_Codierung_Beschreibung.Value
   Cells(letztefreieZeile, 7).Value = Text_Codierung_Wert_vorher.Value
   Cells(letztefreieZeile, 8).Value = Text_Codierung_geändert_auf.Value
   Cells(letztefreieZeile, 15).Value = Text_Codierung_Datum.Value
 
   Text_Codierung_Byte = ""
   Text_Codierung_Bit = ""
   Text_Codierung_Beschreibung = ""
   Text_Codierung_Wert_vorher = ""
   Text_Codierung_geändert_auf = ""
   Text_Codierung_Datum = Date

Eine zusammengefasste Übersicht der Tabelle habe ich als Anhang beigefügt. Wo ist mein Fehler? Huh
Hallo,

bei der Suche nach der letzten belegten Zeile erhälst du als Ergebnis die Zeilennummer, also eine Zahl. Die kannst du nicht in eine String-Variable packen. Die Variable sollte als Long deklariert sein.

Code:
Private Sub Button_Codierung_hinzufuegen_und_neu_Click()
'letzte freie Zeile suchen, Daten eintragen und Eingabemaske leeren
 
   Dim letztefreieZeile As Long
   

  With Worksheets("Historie")
        letztefreieZeile = .Cells(.RowsCount, 1).End(xlUp).Row + 1
   
       'Werte eintragen und Masken leeren

        .Cells(letztefreieZeile, 4).Value = Me.Text_Codierung_Byte.Value
        .Cells(letztefreieZeile, 5).Value = Me.Text_Codierung_Bit.Value
        .Cells(letztefreieZeile, 6).Value = Me.Text_Codierung_Beschreibung.Value
        .Cells(letztefreieZeile, 7).Value = Me.Text_Codierung_Wert_vorher.Value
        .Cells(letztefreieZeile, 8).Value = Me.Text_Codierung_geändert_auf.Value
        .Cells(letztefreieZeile, 15).Value = Me.Text_Codierung_Datum.Value
  
        Me.Text_Codierung_Byte = ""
        Me.Text_Codierung_Bit = ""
        Me.Text_Codierung_Beschreibung = ""
        Me.Text_Codierung_Wert_vorher = ""
        Me.Text_Codierung_geändert_auf = ""
        Me.Text_Codierung_Datum = Date
  End With



Gruß Werner

Andi91

Ok...

Hatte zunächst "Integer" verwendet und dabei gab es den Überlauffehler.

Mit deinem Code (Ich habe Am Ende noch End Sub hinzugefügt) bekomme ich:

"Laufzeitfehler '438': Objekt unterstützt diese Eigenschaft oder Methode nicht."
Hallo,

das geht bei intelligenten Tabellen so nicht.
Code:
Private Sub Button_Codierung_hinzufuegen_und_neu_Click()
'letzte freie Zeile suchen, Daten eintragen und Eingabemaske leeren
Dim letztefreieZeile As Long

With Worksheets("Historie")
    letztefreieZeile = .Cells.Find(What:="*", After:=Range("A1"), _
    SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1

   'Werte eintragen und Masken leeren

    .Cells(letztefreieZeile, 4).Value = Me.Text_Codierung_Byte.Value
    .Cells(letztefreieZeile, 5).Value = Me.Text_Codierung_Bit.Value
    .Cells(letztefreieZeile, 6).Value = Me.Text_Codierung_Beschreibung.Value
    .Cells(letztefreieZeile, 7).Value = Me.Text_Codierung_Wert_vorher.Value
    .Cells(letztefreieZeile, 8).Value = Me.Text_Codierung_geaendert_auf.Value
    .Cells(letztefreieZeile, 15).Value = Me.Text_Codierung_Datum.Value

    Me.Text_Codierung_Byte = ""
    Me.Text_Codierung_Bit = ""
    Me.Text_Codierung_Beschreibung = ""
    Me.Text_Codierung_Wert_vorher = ""
    Me.Text_Codierung_geaendert_auf = ""
    Me.Text_Codierung_Datum = Date

 End With

End Sub



Gruß Werner

Andi91

Super! Danke jetzt hat es funktioniert... aber da wäre ich nie darauf gekommen ...! Top! Dankeschön!
Hallo Werner und Andi,

eine Korinthenkacker-Frage:

Müßte die Variable nicht eigentlich "erstefreieZeile" heißen?

Die letzte ist doch normalerweise immer die 1048576ste.

Andi91

:19: Stimmt eigentlich ... macht mer Sinn ...