Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1420to1424
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

referenz suchen und Daten aktualisieren

referenz suchen und Daten aktualisieren
24.04.2015 22:16:32
stef26
Hallo liebe Excelprofis,
wer könnte mich bei folgendem Problem unterstützen?
Ich habe zwei Tabellenblätter. Es soll im Tabellenblatt Update die Spalte A von oben nach unten in dem Tabellenblatt Bearbeitung gesucht werden.
Wird die Referenz gefunden, so sollen Werte vom Tabellenblatt Update in das Tabellenblatt Bearbeitung übernommen werden.
Ich hab mal eine kleine Tab angelegt die mein Problem versuchen zu beschreiben.
Die Orginal ist erheblich größer. Da ich VBA Kindergartenkind bin bräuchte ich hier Unterstützung. Ich würde dann wenn ich den Code verstanden habe das Ganze dannn im Orginal versuchen umzusetzten um meine VBA Kenntnisse zu verbessern.
Kleine Hinweise im Code wären klasse.
https://www.herber.de/bbs/user/97299.xlsx
Viele Liebe Grüße aus der Oberpfalz
Stefan

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: referenz suchen und Daten aktualisieren
24.04.2015 22:26:52
stef26
Ach hab noch was vergessen (Sorry)
Die Referenz ist ein Eindeutige Wert, der nur einmal vorkommen kann.
:-)
Stefan

AW: referenz suchen und Daten aktualisieren
25.04.2015 08:17:01
stef26
Hallo nochmal,
ich habe mit meinen wenigen Kenntnissen nun fast die ganze Nacht versucht was
zu basteln...
Leider sind vermutlich tausend Fehler drinnen, da es nicht läuft.
Sub SAPUpdate()
Dim strSuche As String        ' Danach wird gesucht
Dim rngFound As Range         ' hier wurde es gefunden
Dim i As Long                 ' Zeilenzähler der Updatetabelle
Dim z As Long                 ' Letzte Zeile Bearbeitungstabelle
For i = 2 To Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row
i = i + 1
z = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
strSuche = Sheets(2).Cell(1, i - 1).Value ' Referenz als Suchwert übergeben
Set rngFound = ActiveSheet.Range("A2:A" & z).Find(strSuche)
If rngFound Is Nothing Then
'Neue Zeile
Sheets(2).Cell(i - 1, 1).Copy
Sheets(1).Cell(z + 1, 1).PasteSpecial xlValues
' hier kommt das einfügen der neuen Zeile noch rein
Next
End If
'Update vorhandener Daten
If Sheets(1).Cell(9, i - 1).Value = "abgeschlossen" Then Next i ' 9=Spalte i
Sheets(2).Cell(i - 1, 2).Copy
Sheets(1).Cell(z, 2).PasteSpecial xlValues
' hier kommen weitere Daten rein die kopiert werden sollen
End If
Next
End Sub

Es fängt schon damit an, dass das Macro nicht mal startet. Next ohne For?
obwohl ich doch eine For Schleife versucht hab rein zu machen..
Ich werde das VBA vermutlich nie checken..
Gähhhn
Liebe Grüße
Stefan

Anzeige
AW: referenz suchen und Daten aktualisieren
25.04.2015 11:22:04
stef26
Ach da hab ich ja einige Fehler drin, die ich selber noch beheben konnte..
Sub SAPUpdate()
Dim strSuche As String        ' Danach wird gesucht
Dim rngFound As Range         ' hier wurde es gefunden
Dim i As Long                 ' Zeilenzähler der Updatetabelle
Dim z As Long                 ' Letzte Zeile Bearbeitungstabelle
For i = 2 To Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row
i = i + 1
z = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
 strSuche = Sheets(2).Cell(1, i - 1).Value ' Referenz als Suchwert übergeben
Set rngFound = ActiveSheet.Range("A2:A" & z).Find(strSuche)
If rngFound Is Nothing Then
'Neue Zeile
Sheets(2).Cell(i - 1, 1).Copy
Sheets(1).Cell(z + 1, 1).PasteSpecial xlValues
' hier kommt das einfügen der neuen Zeile noch rein
End If
'Update vorhandener Daten
If Sheets(1).Cell(9, i - 1).Value  "abgeschlossen" Then  ' 9=Spalte i
Sheets(2).Cell(i - 1, 2).Copy
Sheets(1).Cell(z, 2).PasteSpecial xlValues
' hier kommen weitere Daten rein die kopiert werden sollen
End If
Next i
End Sub
nun bleibt mein Makro aber bei der Übergabe des Suchwertes stehen ?

Anzeige
gelöst
25.04.2015 11:32:44
stef26
Ach bin ich doof Cell statt cells..
Option Explicit
Sub SAPUpdate()
Dim strSuche As String        ' Danach wird gesucht
Dim rngFound As Range         ' hier wurde es gefunden
Dim i As Long                 ' Zeilenzähler der Updatetabelle
Dim z As Long                 ' Letzte Zeile Bearbeitungstabelle
For i = 2 To Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row
i = i + 1
z = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
strSuche = Sheets(2).Cells(1, i - 1).Value ' Referenz als Suchwert übergeben
Set rngFound = ActiveSheet.Range("A2:A" & z).Find(strSuche)
If rngFound Is Nothing Then
'Neue Zeile
Sheets(2).Cells(i - 1, 1).Copy
Sheets(1).Cells(z + 1, 1).PasteSpecial xlValues
' hier kommt das einfügen der neuen Zeile noch rein
End If
'Update vorhandener Daten
If Sheets(1).Cells(9, i - 1).Value  "abgeschlossen" Then  ' 9=Spalte i
Sheets(2).Cells(i - 1, 2).Copy
Sheets(1).Cells(z, 2).PasteSpecial xlValues
' hier kommen weitere Daten rein die kopiert werden sollen
End If
Next i
End Sub
nun hab ichs
Sorry für die Störung...

Anzeige
AW: gelöst
25.04.2015 15:52:07
Werner
Hallo Stefan,
das mit dem "gelöst" wage ich zu bezweifeln. Der Code von dir macht alles nur nicht das was deine Aufgabenstellung ist.
Annahme, die letzte beschriebene Zeile in Blatt 1 Spalte A ist die Zeile 10:
Mit deiner Code Zeile
For i = 2 To Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row

beginnst du eine For - Next Schleife und übergibst ihr den Zeilenbereich von Zeile 2 (For i = 2) bis zur letzten beschriebenen Zeile (Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row) der Spalte A für dieses Beispiel die Zeile 10. Also der Bereich geht von Zeile 2 bis Zeile 10.
Dann folgt bei dir im Code
i = i + 1

Die Variable i hat jetzt den Wert 3
Mit der Zeile
strSuche = Sheets(2).Cells(1, i - 1).Value

Sagst du folgendes: Weise der Variablen strSuche den Wert aus Sheets(2).Cells(Zeile 1, Spalte B) zu.
Bei der .Cells schreibweise ist in der Klammer der erste Wert die Zeilennummer und der zweite Wert die Spaltennummer. .Cells(1, 1) ist also A1, .Cells(1, 2) B1.
Du schreibst .Cells(1 (also Zeile 1), i -1 (i hat den Wert 3, minus 1 = 2, bedeutet Spalte B).
Du übergibst mit deinem Code also den Wert aus Zelle B1 an die Variable strSuche und willst die dann im anderen Tabellenblatt in Spalte A suchen.
Gib mal bei deinem Code nach der Zeile
strSuche = Sheets(2).Cell(1, i - 1).Value

die Zeile
msgBox strSuche

ein, dann Zeigt er dir in einer Box an was du mit dem Code in die Variable strSuche eingelesen hast.
Nur ein Beispiel. Da geht noch mehr durcheinander.
Werner

Anzeige
AW: referenz suchen und Daten aktualisieren
25.04.2015 11:32:59
JoWE
Hallo Stefan,
es muss statt
strSuche = Sheets(2).Cell(1, i - 1).Value
natürlich
strSuche = Sheets(2).Cells(1, i - 1).Value
lauten
Gruß
Jochen

AW: referenz suchen und Daten aktualisieren
25.04.2015 11:42:52
stef26
Hallo,
hab noch nen Logigfehler. Irgenwie macht er den Update in einer neuen Zeile statt die Zeile upzudaten...
Sub SAPUpdate()
Dim strSuche As String        ' Danach wird gesucht
Dim rngFound As Range         ' hier wurde es gefunden
Dim i As Long                 ' Zeilenzähler der Updatetabelle
Dim z As Long                 ' Letzte Zeile Bearbeitungstabelle
For i = 2 To Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row
i = i + 1
z = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
strSuche = Sheets(2).Cells(1, i - 1).Value ' Referenz als Suchwert übergeben
Set rngFound = ActiveSheet.Range("A2:A" & z).Find(strSuche)
If rngFound Is Nothing Then
'Neue Zeile
Sheets(2).Cells(i - 1, 1).Copy
Sheets(1).Cells(z + 1, 1).PasteSpecial xlValues
' hier kommt das einfügen der neuen Zeile noch rein
End If
'Update vorhandener Daten
If Sheets(1).Cells(i - 1, 9).Value  "abgeschlossen" Then ' 9=Spalte i
Sheets(2).Cells(i - 1, 2).Copy
Sheets(1).Cells(z, 2).PasteSpecial xlValues
' hier kommen weitere Daten rein die kopiert werden sollen
End If
Next i
End Sub

Anzeige
AW: jetzt glaub ich dass ichs hab
25.04.2015 19:34:23
stef26
Hallo nochmal,
danke für eure Kommentare und Hilfen.
Ich hab so nach und nach das ganze nochmal korrigiert.
Mit F8 im Schrittmodus (was ich bis jetzt auch noch nicht kannte)
hab ichs glaub ich hin bekommen..
Sub SAPUpdate()
Dim strSuche As String        ' Danach wird gesucht
Dim rngFound As Range         ' hier wurde es gefunden
Dim i As Long                 ' Zeilenzähler der Updatetabelle
Dim z As Long                 ' Letzte Zeile Bearbeitungstabelle
Dim foundZeile As String       ' Zeile in der der Suchwert gefunden wurde
Sheets(2).Activate
For i = 2 To Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row
Sheets(1).Activate
z = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
strSuche = Sheets(2).Cells(i, 1).Value ' Referenz als Suchwert übergeben
Set rngFound = Sheets(1).Range("A2:A" & z).Find(strSuche)
If rngFound Is Nothing Then
'Neue Zeile
Sheets(2).Cells(i, 1).Copy
Sheets(1).Cells(z + 1, 1).PasteSpecial xlValues
Sheets(2).Cells(i, 2).Copy
Sheets(1).Cells(z + 1, 2).PasteSpecial xlValues
' hier kommt das einfügen der neuen Zeile noch rein
GoTo weiter
Else
foundZeile = rngFound.Row
End If
'Update vorhandener Daten
If Sheets(1).Cells(foundZeile, 9).Value  "abgeschlossen" Then ' 9=Spalte i
Sheets(2).Cells(i, 2).Copy
Sheets(1).Cells(foundZeile, 2).PasteSpecial xlValues
' hier kommen weitere Daten rein die kopiert werden sollen
End If
weiter:
Next i
End Sub

Liebe Grüße
Stefan

Anzeige
AW: referenz suchen und Daten aktualisieren
25.04.2015 11:50:09
Luschi
Hallo Stefan,
Du bist in den Festlegungen, wo , was und wie in welchen Sheets (sollte Worksheets sein)
gesucht wird - nur 1 Beispiel:
z = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
Set rngFound = ActiveSheet.Range("A2:A" & z).Find(strSuche)
Jetzt frage ich mich, was hat Sheets(1) mit ActiveSheet zu tun, denn in Sheets(1) ermittelst Du die letzte belegte Zeile in Spalte 'A' und diesen Wert benutzt Du in ActiveSheet zur Festlegung, in welchem Bereich irgend was gesucht werden soll. Das paßt einfach nicht.
Außerdem ist Sheets(1) sowas von einer ungenauen Angabe, denn wenn man auf der Excel-Oberfläche die Tabellen-Objekte verschiebt, wars das schon mit der Genauigkeit. Das gleiche gilt für ActiveSheet.
Schon dieser Vba-Befehl ist ungenau: z = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row:
- Cells zeigt auf Sheets(1)
- Rows.Count auf das gerade auf dem Bilschirm aktivierte Tabellen-Objekt
- ist Sheets(1) oder das aktive Tabellenobjekt gar kein Tabelleblatt sondern ein Diagrammblatt
  machts mächtig knirsch....
Gruß von Luschi
aus klein-Paris

Anzeige
AW: referenz suchen und Daten aktualisieren
25.04.2015 11:54:58
stef26
OK ich gebe zu ich verstehe nur Bahnhof.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige