Anzeige
Archiv - Navigation
1760to1764
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 komplett mit Code kopieren

Userform komplett mit Code kopieren
03.06.2020 12:55:15
ErikSnase
Hallo,
ich habe mal eine längere Frage und hoffe, dass ihr mir helfen könnt:
Und zwar geht es darum, dass ich eine Userform habe, bei der man Abmaße von einem Rechteck, Kreis oder einem Zylinder eingeben muss. In Abhängigkeit der Abmaße und der Flächenart, berechnet mir das Porgramm einige Daten.
Die Auswahl der Flächenart habe ich mit einer ComboBox die die möglichen drei Flächenarten beinhaltet.
Die Abmaße wie zum Beispiel Länge und Breite muss man dann in ein Textfeld eingeben und dieser Einträge werden in die Exceltabelle eingefügt:
Range("E17") = TextBox5.Value Der TextBox5 Eintrag soll in die Zelle E17 eingetragen werden.
So habe ich das für jedes Textfeld entsprechend gemacht.
Jetzt ist aber das Problem, dass ich nicht nur eine Fläche eintragen will, sondern bis zu 25. Ich wollte das jetzt eigentlich so machen, dass ich einen "Neue Fläche hinzufügen"- Button einfüge, und wenn man auf den Clickt öffnet sich eine komplett neue Userform die genauso aussieht wie die erste, und das mache ich 25 Mal. Das wollte ich so machen, weil ich ja eine Abhängigkeit von der TextBox5 zu der Zelle "E17" habe und wenn ich eine neue Fläche hinzufügen würde, dann würde der vorherige Wert einfach überschrieben werden.
Daher brauche ich jetzt deine/eure Hilfe:
Kann ich es irgendwie so programmieren, dass ich irgendwie nen Button mache mit "Eintrag übernehmen", er dann die Einträge in die Excel- Tabelle einfügt und wenn ich dann eine neue Fläche einüge die Zelle um 1 erhöht, sprich vorher hat er den TextBox5 eintrag in "E17" eingetragen, aber den nächsten eintrag trägt er in "F17" ein.
Ich hoffe ihr/du habt/hast mein Problem verstanden.
Vielen Dank für die Hilfe

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform komplett mit Code kopieren
03.06.2020 16:21:49
fcs
Hallo Erik,
das ist "nicht so schwierig".
Die Textboxen dürfen dann nicht mit Zellen fest verknüpft sein.
Das Ganze muss dynamisch gestaltet werden.
Im Makro:
  • 1. Schritt
    Ermitteln der nächsten freien Spalte - dies in einer Zeile, die bei jeder Form ausgefüllt wird!.

  • Weitere Schritte
    Textbox-Inhalte indie Zeilen in der Spalte eintragen
    Dabei sollten Textbox-Inhalte die Zahlen/Datumseingaben darstellen in "echte" Zahlen/Datumswerte umgewandelt werden.

  • LG
    Franz
    Code-Beispiel
    Private Sub CommandButton1_Click()
    'Button neue Fläche anlegen
    Dim Spalte_N As Long
    Dim wks As Worksheet
    Set wks = ActiveSheet 'Tabellenblatt in das eingetragen werden soll
    With wks
    'nächste leere Spalte in Zeile 17
    Spalte_N = .Cells(17, .Columns.Count).End(xlToLeft).Column
    If Spalte_N  "" Then
    .Cells(17, Spalte_N).Value = fncWert(Me.TextBox5.Value)
    End If
    'TextBox6 in Zeile 18 eintragen
    If Me.TextBox6.Value  "" Then
    .Cells(18, Spalte_N).Value = fncWert(Me.TextBox6.Value)
    End If
    'usw.
    End With
    End Sub
    Private Function fncWert(sWert As String) As Variant
    'Wandelt Texte, die Zahlen oder Datumswerte darstellen in "echte" _
    Zahlen/Datumswerte um
    If sWert = "" Then
    fncWert = ""
    ElseIf Len(sWert) - Len(Replace(sWert, ".", "")) = 2 And IsDate(sWert) Then
    fncWert = CDate(sWert)
    ElseIf IsNumeric(sWert) Then
    fncWert = CDbl(sWert)
    Else
    fncWert = sWert
    End If
    End Function
    

    Anzeige
    AW: Userform komplett mit Code kopieren
    04.06.2020 11:59:26
    ErikSnase
    Hey,
    erstmal vielen Dank für deine Antwort.
    Ich habe nochmal eine andere Frage:
    Ich habe in VBA zwei Textfelder in der man Werte eintragen kann und diese sollen dann mit einem CommandButton in die Excel- Tabelle übertragen werden.
    Der Wert in dem ersten Textfeld soll in die erste freie Zelle der 3 . Spalte und der Wert in dem zweiten Textfeld soll in die erste freie Zelle der 4. Spalte.
    Es besteht die Möglichkeit in beide Textfelder was reinzuschreiben, aber man kann auch nur in ein Textfeld was reinschreiben.
    Wenn bspw. in Textfeld 1 ein Wert eingegeben wird aber in Textfeld 2 nicht und man mit dem CommandButton den Eintrag in die Excel- Tabelle übertragen will, soll in der ersten freien Zelle der 3. Spalte der eingegebene Wert und in der ersten freien Zelle der 4. Spalte eine 0 eingetragen werden (man hat ja nichts in Textfeld 2 einegeben).
    Man muss das sicherlich mit einer Variable machen, leider habe ich keine Ahnung wie das geht. Daher benötige ich deine Hilfe.
    Letzte Frage: Wie kann ich sagen, dass die definierte Variable erst bei bspw. Spalte 3 zeile 3 anfängt und bei Spalte 3 zelle 28 aufhört?
    Vielen Dank
    Anzeige
    AW: Userform komplett mit Code kopieren
    04.06.2020 23:20:18
    fcs
    Hallo Erik,
    hier ein Beispiel wenn die Textbox inhalte in bestimmten Spalten in einem Zeilenbeeich eingetragen werden sollen.
    LG
    Franz
    Private Function fncWert(sWert As String) As Variant
    'Wandelt Texte, die Zahlen oder Datumswerte darstellen in "echte" _
    Zahlen/Datumswerte um
    If sWert = "" Then
    fncWert = ""
    ElseIf Len(sWert) - Len(Replace(sWert, ".", "")) = 2 And IsDate(sWert) Then
    fncWert = CDate(sWert)
    ElseIf IsNumeric(sWert) Then
    fncWert = CDbl(sWert)
    Else
    fncWert = sWert
    End If
    End Function
    Private Sub CommandButton2_Click()
    'Button Spalte 3 und 4 auffüllen von Zeile 3 bis 28
    Dim Spalte_1 As Long, Spalte_2 As Long
    Dim Zeile_1 As Long
    Dim Zeile_L As Long
    Dim Zeile As Long
    Dim wks As Worksheet
    Set wks = ActiveSheet 'Tabellenblatt in das eingetragen werden soll
    Zeile_1 = 3     '1. auszufüllende Zeile
    Zeile_L = 28    'letzte auszufüllende Zeile
    Spalte_1 = 3    'Spalte in die Inhalt von Textbox1 eingetragen werden soll
    Spalte_2 = 4    'Spalte in die Textbox2 eingetragen werden soll
    With wks
    'prüfen, ob letzte Zeile ausgefüllt ist
    If .Cells(Zeile_L, Spalte_1).Value  "" Then
    MsgBox "Alle Zeilen sind ausgefüllt!", vbOKOnly, "Spalte 3 und Spalte 4 füllen"
    Else
    'letzte ausgefüllte Zeile in Spalte_1
    Zeile = .Cells(Zeile_L + 1, Spalte_1).End(xlUp).Row
    'auszufüllende Zeile berechnen
    If Zeile 

    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige