Speichern in verschiedenen Tabellenblättern in Abhängigkeit von
#1
Hallo liebe Excel-Experten,

ich habe (mal wieder) ein Problem und brauche eure Hilfe.

In meiner UserForm habe ich ComboBoxen, TextBoxen etc., dessen Inhalt durch ein klicken auf den Button 'Speichern' auf meine Exceltabelle übertragen werden.
In meiner Textbox1 kann man "Hund;Katze;Maus" auswählen.
Jetzt soll er machen:
Wenn Hund ausgewählt wird, dann alle KomboBoxen & Textboxen in Babellenblatt1 übertragen
Wenn Katze ausgewählt wird, dann alle KomboBoxen & Textboxen in Babellenblatt2 übertragen
Wenn Maus ausgewählt wird, dann alle KomboBoxen & Textboxen in Babellenblatt3 übertragen
Ich hoffe Ihr versteht mein Problem und könnt mir vllt sogar helfen.

Gruß
Jan
Top
#2
Haloo!
Vielleicht hilft Dir dieser Pseudocode bereits weiter, ansonsten: Datei hochladen!
Code:
Private Sub CommandButton1_Click()
Dim wks As Worksheet
Select Case ComboBox1.Text
  Case "Hund": Set wks = Worksheets("Tabelle1")
  Case "Katze": Set wks = Worksheets("Tabelle2")
  Case "Maus": Set wks = Worksheets("Tabelle3")
End Select
wks.Cells(15, 2) = TextBox1
End Sub
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#3
Danke schon mal für die Antwort.

Code:
Private Sub CommandButton1_Click()

If Trim(CStr(TextBox1.Text)) = "" Then
         MsgBox "Sie müssen einen Kunden eingeben!", vbCritical + vbOKOnly, "FEHLER!"
         Exit Sub
End If
If Trim(CStr(TextBox2.Text)) = "" Then
         MsgBox "Sie müssen eine Bauteilbezeichnung eingeben!", vbCritical + vbOKOnly, "FEHLER!"
         Exit Sub
End If

If Trim(CStr(ComboBox3.Text)) = "" Then
         MsgBox "Sie müssen einen Status auswählen!", vbCritical + vbOKOnly, "FEHLER!"
         Exit Sub
End If


If Trim(CStr(ComboBox2.Text)) = "" Then
         MsgBox "Sie müssen eine Schaumart auswählen!", vbCritical + vbOKOnly, "FEHLER!"
         Exit Sub
End If


Dim bolFound As Long
Dim i As Long

For i = 12 To 143
 bolFound = bolFound Or Controls("TextBox" & i) <> ""
Next i
If Not bolFound Then
 MsgBox "Es müssen Stückzahlen eingegeben werden"
Exit Sub
End If



  Dim ZeileMax As Long
  Dim Zeile As Long
  Dim loSpalte As Long
 
   
 
 
  With Tabelle1
     ZeileMax = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)   'letzte belegte Zeile in Spalte A (1)
     Zeile = ZeileMax + 1
     
     .Range("A" & Zeile).Value = Me.TextBox1.Value
     .Range("B" & Zeile).Value = Me.TextBox2.Value
     .Range("C" & Zeile).Value = Me.TextBox3.Value
     .Range("D" & Zeile).Value = Me.ComboBox3.Value
     .Range("E" & Zeile).Value = Me.TextBox4.Value
     .Range("F" & Zeile).Value = Me.ComboBox5.Value
     
   If OptionButton1.Value Then
       .Range("G" & Zeile).Value = ""
   End If
   
     
   If OptionButton2.Value Then
       .Range("G" & Zeile).Value = "Folie"
   End If
     
       .Range("H" & Zeile).Value = Me.ComboBox2.Value
       .Range("I" & Zeile).Value = Me.ComboBox1.Value
       .Range("J" & Zeile).Value = Me.ComboBox4.Value
       .Range("K" & Zeile).Value = Me.TextBox6.Value
       .Range("L" & Zeile).Value = Me.TextBox7.Value
       .Range("M" & Zeile).Value = Me.TextBox8.Value
       .Range("N" & Zeile).Value = Me.TextBox9.Value
       .Range("O" & Zeile).Value = Me.TextBox10.Value
       .Range("P" & Zeile).Value = Me.TextBox11.Value

      For loSpalte = 18 To 149
        .Cells(Zeile, loSpalte) = Me.Controls("TextBox" & loSpalte - 6).Value
     Next loSpalte
     

.Range("A4:P4").Copy
    .Range("A" & Zeile).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False


.Range("R4:ES4").Copy
    .Range("R" & Zeile).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
       
.Range("EU4:JV4").Copy
    .Range("EU" & Zeile).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
       
       
   
.Range("EU4:JV4").Copy
    .Range("EU" & Zeile).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

.Range("PF4:UG4").Copy
    .Range("PF" & Zeile).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
       
.Range("PF4:UG4").Copy
    .Range("EU" & Zeile).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

       
End With

ThisWorkbook.Save
 
End Sub
Das ist mein Code für den Button "Speichern". Bestimmt kann man das ganze (deutlich) kürzer fassen. Aber bei mir läuft bisher alles so, wie es soll. Von daher bin ich besonders als VBA-Anfänger zufrieden.
Bisher kamen nur Fehlermeldungen, als ich deinen Code meinen Tabellen angepasst habe. Daher weiterhin für jede Art von Hilfe offen und dankebar!!
Gruß Jan
Top
#4
Und meine Datei kann ich natürlich auch gerne dran hängen.
Dazu: Hund Katze Maus war ein allg. Bsp.
In meinem Fall soll bei der ComboBox "Werk" bei der Auswahl "1411 NOV" in dem Arbeitsblatt "Novaky" gespeichert werden. Bei "1161 HDL" in dem Arbeitsblatt "Haldenleben". Und bei "1521 MEX" in dem Arbeitsblatt "Mexiko" usw.

Die Formate sind bislang nur in der Arbeitsblatt Novaky gespeichert. In die anderen Arbeitsblätter würde ich ihm Nachhinein noch die Formate übernehmen.

Gruß Jan


Angehängte Dateien
.xlsm   Kapa_Button + Stückzahleingabe.xlsm (Größe: 84,05 KB / Downloads: 5)
Top
#5
Hallo Jan,

in Deiner angehängten Datei ist kein Blatt Nokay und die Blätter für die Werke sind auch nicht drin.

Wenn man im Dialog irgendwas einträgt, kommt auch kein Fehler. Allerdings ist auf dem Blatt "Bestell-Liste" in den Formeln ein Bezugsfehler.
=WENN(ODER($M3=0;$M3="");"";#BEZUG!/$M3*$P3)

Der kommt aber wohl nicht vom code.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#6
Moin Jan!
Es dürfte doch kein Problem sein, meinen Pseudocode auf Deine Bedürfnisse anzupassen?
Code:
Dim wks As Worksheet
Select Case ComboBox1.Text
 Case "1411 NOV": Set wks = Worksheets("Novaky")
 Case "1521 MEX": Set wks = Worksheets("Mexiko")
 'weitere Werke
End Select
In Deinem CommandButton1_Click dann statt With Tabelle1 With wks

Allerdings würde ich kein Tabellenblatt pro Werk nehmen, sondern alles in eine Tabelle schreiben (zusätzliche Spalte "Werk") und die Auswertung mittels Autofilter oder besser noch mit einer Pivottabelle vornehmen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste