Übertrag/Sortierung in Tabelle
#1
Guten Tag,

ich stehe vor folgendem Problem:
Ich habe eine Tabelle mit einer Menge Verbandmaterial, zZ muss man diese Liste händisch ausfüllen, das würde ich gerne automatisieren.

Die Tabelle in der die verbrauchten Materialien eingetragen werden sollen sieht so aus.
Datum | Standort | Name | Material 1 | Material 2 | Material 3 usw....


Ich dachte mir , dass ich ein Eingabe Feld über der Tabelle mache mit
Datum | Standort | Name | Materialauswahl (Dropdown) | Stückzahl |

Dort wird alles eingetragen und soll dann in die Tabelle z.B. über einem Button übertragen werden.

Ich habe bereits eine ähnlich Tabelle mit einer Übertragung angelegt, mit meinem Code komme ich aber nicht weiter.
Ich weiß nicht wie ich den Code erweitere, so dass die Materialien in die richtige Spalte sortiert wird.


Code:
Sub speichern()
Dim Name As String, Vorname As String, Personalnummer As String, Schlüsselnummer As String, Schlüsselgruppe As String
Worksheets("Übersicht").Select
Name = Range("A5")
Vorname = Range("B5")
Personalnummer = Range("C5")
Schlüsselnummer = Range("D5")
Schlüsselgruppe = Range("E5")
Worksheets("Schlüsseltabelle").Select
Worksheets("Schlüsseltabelle").Range("A1").Select
If Worksheets("Schlüsseltabelle").Range("A1").Offset(1, 0) <> "" Then
Worksheets("Schlüsseltabelle").Range("A1").End(xlDown).Select
End If

ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Name
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Vorname
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Personalnummer
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Schlüsselnummer
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Schlüsselgruppe

End Sub
Top
#2
Moin,

kopiere den Code mal richtig und füge ihn hier ein. Für eine bessere Darstellung kannst Du dann die Codetags benutzen. Dazu gibt es oben direkt über dem Textfeld den 5. Button von rechts. Wenn Du langsam über die Buttons gehst bekommst Du den ToolTip "Code"
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Kiter1988
Top
#3
Ich habe den Code mal angepasst.
Soweit funktioniert es, ich brauche nur ein Lösung für die Einsortierung der Materialien.
Eine Art "suche nach Spalte" dann " Nummer in richtiger Zeile einfügen"

Code:
Sub Einfügen()
Dim Datum As String, Standort As String, Name As String, Material As String, Stück As String
Worksheets("Übersicht").Select
Datum = Range("E5")
Standort = Range("F5")
Name = Range("G5")
Material = Range("H5")
Stk = Range("M5")
Worksheets("Übersicht").Select
Worksheets("Übersicht").Range("A26").Select
If Worksheets("Übersicht").Range("A26").Offset(1, 0) <> "" Then
Worksheets("Übersicht").Range("A26").End(xlDown).Select
End If

ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Datum
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Standort
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Name
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Material
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Stk
End Sub
Top
#4
Hallöchen,

da gibt es auch wieder verschiedene Wege. Einer wäre, die Suche zu benutzen - code kann man ggf. aufzeichnen. Da Du eine Auswahl hast und die Syntax hoffentlich den Tabellenüberschriften entspricht, könntest Du z.B. auch Select Case verwenden

Im Prinzip

Select Case Range("D4").Value
Case "Material 1": Range("D8").Value = Range("D4").Value
Case "Material 2": Range("E8").Value = Range("D4").Value
'... usw.
End Select

oder

Dim iSpalte as Integer
Select Case Range("D4").Value
Case "Material 1": iSpalte = 4
Case "Material 2": iSpalte = 5
'... usw.
End Select
Cells(8, iSpalte).Value = Range("D4").Value 'Oder ActiveCell.Offset(...) ...

oder ...

mal abgesehen von anderen Verbesserungsmöglichkeiten hier mal eine zum Offset.
nimm von der aktiven Zelle in Spalte A immer eine Zahl weiter, dann musst Du nicht jedes mal aktivieren

ActiveCell.Offset(1, 0).Value = Datum
ActiveCell.Offset(1, 1).Value = Standort
ActiveCell.Offset(1, 2).Value = Name
ActiveCell.Offset(1, 3).Value = Material
ActiveCell.Offset(1, 4).Value = Stk
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Kiter1988
Top
#5
Hallo, danke erstmal.

Die Offset Lösung funktioniert leider nicht so gut, deine Lösung ändert den letzten Eintrag in der Tabelle.
Code:
ActiveCell.Offset(1, 0).Select
ActiveCell.Offset.Value = Datum
ActiveCell.Offset(0, 1).Value = Standort
ActiveCell.Offset(0, 2).Value = Name
ActiveCell.Offset(0, 3).Value = Material
ActiveCell.Offset(0, 4).Value = Stk


So funktioniert es aber. 


An welcher Stelle füge ich den "Select Range" Code in meinem Bestehenden ein ?
Top
#6
Hallöchen,

den Code fügst Du vor den Offsets ein.

Allerdings kommt nun mein nächster Hinweis. Irgendwie stimmt entweder die beschriebene Logik nicht oder die Programmierung. Du hast oben geschrieben, dass DU hier

Zitat:Die Tabelle in der die verbrauchten Materialien eingetragen werden sollen sieht so aus.
Datum | Standort | Name | Material 1 | Material 2 | Material 3 usw....

die Daten eintragen willst.

Das sollte die Eingabemaske sein:

Zitat:Ich dachte mir , dass ich ein Eingabe Feld über der Tabelle mache mit
Datum | Standort | Name | Materialauswahl (Dropdown) | Stückzahl |


Mit diesem Code
ActiveCell.Offset(0, 4).Value = Stk
trägst Du die Stückzahl ein. Das sieht aber nun so aus, als ob der Code die Eingabemaske füllt - wo Stückzahl an 4. Stelle steht, und nicht die Datentabelle. Dort steht an 4. Stelle Material 2.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Kiter1988
Top
#7
Hallo,

ich denke meine Beschreibung kam falsch rüber.
Die Eingabemaske ist diese:
Code:
Datum | Standort | Name | Materialauswahl (Dropdown) | Stückzahl |

In der Materialauswahl werden die Materialien aus der Tabelle unten (per Datenüberprüfung -> Liste) angezeigt.



So sieht die Tabelle aus, in die der Inhalt der Eingabemaske eingefügt werden soll.
Code:
Datum | Standort | Name | Material 1 | Material 2 | Material 3 usw....
Top
#8
Hallöchen,

nö, da ist nix falsch angekommen, ich hab's doch auch so beschrieben, nur erst die Tabeelle mit den Eintragungen und dann die Tabelle für die Eingabe.

Wie gesagt, wenn Deine Beschreibung stimmt, dann stimmt der code nicht. Hab ich auch begründet. Korrekt?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Kiter1988
Top
#9
Ich kann nicht mehr folgen. Huh

Der Code fügt das in die Tabelle ein, was ich in die Eingabemaske tippe bzw. auswähle, also funktioniert es doch im Prinzip.
Datum in Datum
Name in Name
Standort in Standort

Es fehlt nur eine Sortierung der Stückzahl in die richtige Materialspalte.
Top
#10
Hallöchen,

na, dann passt diese Ansatz. Das mit dem Dim kommt am Anfang zu den anderen Dim, und Select Case usw. kannst Du vor der Zeile schreiben wo Du die Zahl einträgst.

Dim iSpalte as Integer


Select Case Range("D4").Value
Case "Material 1": iSpalte = 4
Case "Material 2": iSpalte = 5
'... usw.
End Select
ActiveCell.Offset(0, iSpalte).Value = Stk
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Kiter1988
Top


Gehe zu:


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