trmanky
Goto Top

Daten in bestimmte Zeile eintragen

Hallo IT-Gemeinde,

ich habe ein relativ kompliziertes Problem, jedenfalls lässt sich danach schlecht bei Google suchen :D

Folgender Hintergrund:
Ich habe den Auftrag eine Datenbank für ein neues Produkt zu erstellen. Das Produkt besteht dabei aus verschieden Einzelteilen, die wir selbst zusammenfügen. Jedes Teil hat eine eigene Seriennummer usw.
Dazu hab ich als erstes eine Tabelle erstellt mit den verschiedenen Seriennummern, Montagedatum und Monteur.
Um die Daten nun schnell eingeben zu können, habe ich ein Eingabeformular erstellt, Buttons mit Makros setzen eine neue Zeile ein und setzen die Werte nun in die jeweilige Spalte ein, sodass sich die Liste von oben nach unten füllt.

Nun soll es noch einen Testlauf geben. Gesagt getan, habe ich ein Formular für diesen Testlauf erstellt. Diese Daten sollen ebenfalls in die Tabelle. Ich habe die Tabelle also um die Punkte des Testlaufs erweitert und wollte gerade mit der Erstellung des Makros zur Eingabe der Daten in die Tabelle beginnen, als ich auf mein Problem stieß:

Wie finde ich den Datensatz (also das montierte Produkt) in meiner Tabelle, um in der gleichen Zeile die Daten für den Testlauf einzutragen? Bei der Montage erhält das Produkt eine eigene Seriennummer, d.h. hinter einer Seriennummer stecken die einzelnen Nummern der Bauteile. Das Problem ist nämlich, dass nicht zwingend direkt nach der Montage der Testlauf durchgeführt wird. Ich kann also nicht einfach in der aktuelle Zeile arbeiten, sondern muss die Zeile der Seriennummer entsprechend erst suchen.

Nun muss ich also per Makro nach der Seriennummer suchen, die Zeile auswählen, dann X Schritte nach rechts (zu der jeweiligen Spalte, in der der erste Datensatz des Testprotokolls eingegeben werden soll), um dann die Daten nacheinander eintragen lassen zu können.

Ich weiß, ich könnte es mir einfach machen und eine zweite Tabelle anfangen, nur für die Testprotokolle, aber das möchte ich nicht. Ich möchte alles in einer Tabelle stehen haben. Gibt es eine Möglichkeit das zu bewerkstelligen?

Meine Kenntniss in VBA sind sehr, sehr, sehr, sehr gering, also bräuchte ich eine relativ ausführliche Erläuterung =)

VG

Content-ID: 172576

Url: https://administrator.de/contentid/172576

Ausgedruckt am: 26.11.2024 um 14:11 Uhr

bastla
bastla 05.09.2011 um 12:20:16 Uhr
Goto Top
Hallo trmanky!
Wie finde ich den Datensatz (also das montierte Produkt) in meiner Tabelle
Gegenfrage - wie würdest Du das in der Tabelle ohne VBA machen? Wenn Du darauf eine Antwort hast, ist der Weg (über ein aufgezeichnetes Makro als Zwischenschritt) gar nicht mehr weit ...

Grüße
bastla
trmanky
trmanky 05.09.2011 um 12:38:32 Uhr
Goto Top
Hallo bastla,

diesen Gedanken hatte ich auch schon und habe prompt ein Makro aufgezeichnet und dann auf Suchen + Auswählen geklickt, die Zelle auf dem Testlaufprotokoll mit der Seriennummer angewählt kopiert und eingefügt und schließlich gesucht. Aber wenn ich mir nun das Makro anschaue, steht da:

Range("D5").Select
Selection.Copy
Sheets("Rekorder-SN").Select
Cells.Find(What:="123456", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate

unter "Cells.Find(What=123456..." sehe ich, dass er zwar nach der SN (hier nur eine Test-SN :D) sucht, aber eben nicht nach dem variablen kopierten aus D5 sondern nach der exakten Nummer. Das ist doch nicht richtig oder? Und wie kann ich jetzt die jeweiligen Spalten anwählen? Über den Cells-Befehl?

VG
bastla
bastla 05.09.2011 um 12:53:44 Uhr
Goto Top
Hallo tmanky!

Der nächste Schritt wäre, zum einen die Konstante "123456" durch eine Variable oder einen Bezug auf die Zelle (also zB Cells(5, "D").Value)) zu ersetzen und zum anderen, in der Online-Hilfe nach "Find" zu suchen ...

... und da das uU nicht unmittelbar zum gewünschten Ergebnis führt, einen anderen Begriff aus dem aufgezeichneten Suchvorgang, also etwa "SearchOrder" oder "LookIn" zu verwenden - früher oder später bist Du dann bei der "Range.Find"-Methode angekommen.
Die Zeile einer Zelle findest Du übrigens mit ".Row" heraus ...

Grüße
bastla

P.S.: Wenn Du Code postest, verwende doch bitte die passende ...
trmanky
trmanky 06.09.2011 um 12:52:02 Uhr
Goto Top
Heyho,

ich habs gelöst =) mit ein bisschen von allem :D

' suchen Makro  
Dim i As Integer
' D7 Suchzelle kopieren  
 Sheets("Testprotokoll").Select  
    Range("D5").Select  
    Selection.Copy
    Sheets("Rekorder-SN").Select  
    Range("V1").Select  
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
' Inhalt Ergebnis kopieren  
Sheets("Testprotokoll").Select  
    Range("D7").Select  
    Selection.Copy
    Sheets("Rekorder-SN").Select  
' Suchen und einfügen  
For i = 3 To 4000
If Cells(i, 2) = Cells(1, 22) Then

Range("C" & i).Select  
ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column + 7).Activate

Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

On Error Resume Next
End If
Next

Hoffe, die Formatierung hat geklappt.
Ich habe mir als erstes eine Suchzelle "erschaffen". Also eine Zelle im Blatt der Tabelle, in die ich die gesuchte SN jedes mal hineinkopiere. Danach kopiere ich den in die Tabelle einzufügenden Inhalt und beginne mit der Suche nach meiner SN.
Ist die gefunden, springe ich bestimme Schritte(=Zellen) nach rechts und kopiere die Daten hinein.
Das wäre also erledigt, nun habe ich aber ein weiteres Problem, dazu eröffne ich aber ein neues Thema :D

Danke, für die Hilfe, vllt schaust du in mein neues Thema auch gleich nochmal rein face-wink

VG