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

Änderungen an bestehendem VBA Code

Änderungen an bestehendem VBA Code
Manu
Hallo Excel Freunde,
In der Anlage sind drei Tabellen mit einem hinterlegten VBA Code. Der Code funktioniert wunderbar. Nachdem ich aber Filter eingefügt habe, funktioniert er nur noch bedingt.
https://www.herber.de/bbs/user/75712.zip
Folgendes Problem besteht:
Ich möchte in Tabelle "Report" gewisse Spalten filtern. Wenn ich beispielsweise die Spalte A nach test 1 filtern möchte gibt er mir ab spalte D nur eine Zeile wieder. Er sollte mir aber zwei Zeilen ausgeben (funktionierte bevor ich Filter hinzugefügt habe), da in Tabelle M zwei einträge mit "test 1" stehen.
Weiß dazu jemand den passenden Code oder die entsprechende Änderung an meinem VBA Code?
2. Frage: Noch eine Frage
Wenn ich den jetzigen Code ausführe, gibt er mir die Daten aus tabelle P und tabelle M in der Reporttabelle immer wieder neu an und zwar alle vorhandenen Meldungen mit den zugehörigen Daten. Da Tabelle P und M jedoch ständig mit neuen und auch bereits vorhandenen daten gefüttert wird, möchte ich, dass VBA erkennt, welche Meldungen bereits in der Reporttabelle vorhanden sind und diese dann nicht mehr in die Zieltabelle schiebt, sondern nur jene, welche in Tabelle P und M neu dazu gekommen sind.
Ist dies soweit verständlich?
Wäre super, wenn mir jemand helfen könnte?!
Gruß
Manu
AW: Änderungen an bestehendem VBA Code
14.07.2011 17:42:08
Mustafa
Hallo Manu,
du hast wohl einen kleinen Denkfehler.
Wenn du nach Spalte A "test 1" filterst, dann bleibt auch nur der eine Wert in Spalte D, weil du in Spalte A nur einen Eintrag "test 1" hast.
Entferne den Apostroff in der Zeile :
'ActiveWorkbook.Sheets(1).Cells(lZeile + 1, 1) = sNr.Value
Damit er in jede Zeile den Wert "test 1" reinschreibt und du hast wieder alle Daten in Spalte D.
Für den Teil des Doppeleintrages würd ich vorschlagen das du den Bereich vorher komplett löschst und die Daten jedesmal neu eintragen lässt.
Somit wäre deine Report Tabelle immer Aktull und ohne Doppelte.
Rückmeldung obs Hilft wäre nett.
Gruß (noch) aus der Domstadt Köln.
Anzeige
AW: Änderungen an bestehendem VBA Code
14.07.2011 18:09:06
Manu
Hallo Mustafa,
nun habe ich den Apostroff gelöscht und mir werden alle referenznr. in Spalte A im Reportsheet angezeigt. Was nun aber nicht gelingt ist folgendes:
Wenn ich nun in einer nach einer anderen Spalte filter, werden mir zu dieser Ref-nr. nicht alle Daten aus Tabelle M geliefert.
Kannst du weiterhelfen?
Gruß
Manu
AW: Änderungen an bestehendem VBA Code
14.07.2011 18:01:30
Mustafa
Hier mal ein Versuch den Code so anzupassen wie ichs meine :
Sub tabellen_zusammenfassen()
Dim refNr As Range, sNr As Range
Dim lZeile1 As Long, lZeile2 As Long, lZeile3 As Long
Dim wks1 As Worksheet, wks2 As Worksheet, wks3 As Worksheet
Set wks1 = Worksheets("Report")
Set wks2 = Worksheets("Prüfberichte")
Set wks3 = Worksheets("Maßnahmen")
lZeile1 = wks1.Cells(Rows.Count, 1).End(xlUp).Row
lZeile2 = wks2.Cells(Rows.Count, 1).End(xlUp).Row
lZeile3 = wks3.Cells(Rows.Count, 1).End(xlUp).Row
If Not lZeile1 = 1 Then wks1.Range(wks1.Cells(2, 1), wks1.Cells(lZeile1, 5)).ClearContents
lZeile1 = 2
For Each refNr In wks2.Range(wks2.Cells(2, 1), wks2.Cells(lZeile2, 1))
If refNr  "" Then
wks1.Cells(lZeile1, 1) = refNr.Value
wks1.Cells(lZeile1, 2) = refNr.Offset(0, 1)
wks1.Cells(lZeile1, 3) = refNr.Offset(0, 2)
For Each sNr In wks3.Range(wks3.Cells(2, 1), wks3.Cells(lZeile3, 1))
If refNr = sNr Then
wks1.Cells(lZeile1, 1) = sNr.Value
wks1.Cells(lZeile1, 4) = sNr.Offset(0, 1)
wks1.Cells(lZeile1, 5) = sNr.Offset(0, 2)
lZeile1 = lZeile1 + 1
End If
Next
lZeile1 = lZeile1 + 1
End If
Next
End Sub
Gruß (noch) aus der Domstadt Köln.
Anzeige
AW: Änderungen an bestehendem VBA Code
14.07.2011 18:10:40
Mustafa
Und nochmal der Code etwas aufgräumter :
Sub tabellen_zusammenfassen()
Dim refNr As Range, sNr As Range
Dim lZeile1 As Long, lZeile2 As Long, lZeile3 As Long
Dim wks1 As Worksheet, wks2 As Worksheet, wks3 As Worksheet
Set wks1 = Worksheets("Report")
Set wks2 = Worksheets("Prüfberichte")
Set wks3 = Worksheets("Maßnahmen")
lZeile1 = wks1.Cells(Rows.Count, 1).End(xlUp).Row
lZeile2 = wks2.Cells(Rows.Count, 1).End(xlUp).Row
lZeile3 = wks3.Cells(Rows.Count, 1).End(xlUp).Row
If Not lZeile1 = 1 Then wks1.Range(wks1.Cells(2, 1), wks1.Cells(lZeile1, 5)).ClearContents
lZeile1 = 2
For Each refNr In wks2.Range(wks2.Cells(2, 1), wks2.Cells(lZeile2, 1))
If refNr  "" Then
wks1.Cells(lZeile1, 1) = refNr.Value
wks1.Cells(lZeile1, 2) = refNr.Offset(0, 1)
wks1.Cells(lZeile1, 3) = refNr.Offset(0, 2)
For Each sNr In wks3.Range(wks3.Cells(2, 1), wks3.Cells(lZeile3, 1))
If refNr = sNr Then
wks1.Cells(lZeile1, 1) = sNr.Value
wks1.Cells(lZeile1, 4) = sNr.Offset(0, 1)
wks1.Cells(lZeile1, 5) = sNr.Offset(0, 2)
lZeile1 = lZeile1 + 1
End If
Next
lZeile1 = lZeile1 + 1
End If
Next
Set wks1 = Nothing
Set wks2 = Nothing
Set wks3 = Nothing
End Sub

Gruß (noch) aus der Domstadt Köln.
Anzeige
AW: Änderungen an bestehendem VBA Code
15.07.2011 00:37:20
Manu
Hey Mustafa,
Vielen dank für dein tollen code, du bist mein retter.
Kannst du mir vielleicht nochmal weiterhelfen?
Und zwar möchte ich nun noch, dass die daten aus tabelle P, welche ja nach Report übertragen werden in allen zeilen vorkommen in denen die selbe refnr. steht.
Beispiel:
In tabelle P kommt ja immer nur eine ref. nr. namens test1 vor. In Tabelle M können dafür mehrere daten unter test 1 stehen. Kann es so programmiert werden, dass die daten in der zeile test 1 auch in die anderen Zeilen mit test 1 übertragen werden sollen (im Report sheet). Dies soll allerdings nur für die Daten aus Tabelle P gehen und nicht aus Tabelle M?
Danke und Gruß
Anzeige
AW: Änderungen an bestehendem VBA Code
15.07.2011 00:39:33
Manu
Hey Mustafa,
Vielen dank für dein tollen code, du bist mein retter.
Kannst du mir vielleicht nochmal weiterhelfen?
Und zwar möchte ich nun noch, dass die daten aus tabelle P, welche ja nach Report übertragen werden in allen zeilen vorkommen in denen die selbe refnr. steht.
Beispiel:
In tabelle P kommt ja immer nur eine ref. nr. namens test1 vor. In Tabelle M können dafür mehrere daten unter test 1 stehen. Kann es so programmiert werden, dass die daten in der zeile test 1 auch in die anderen Zeilen mit test 1 übertragen werden sollen (im Report sheet). Dies soll allerdings nur für die Daten aus Tabelle P gehen und nicht aus Tabelle M?
Danke und Gruß
Anzeige
AW: Änderungen an bestehendem VBA Code
15.07.2011 00:40:51
Manu
Hey Mustafa,
Vielen dank für dein tollen code, du bist mein retter.
Kannst du mir vielleicht nochmal weiterhelfen?
Und zwar möchte ich nun noch, dass die daten aus tabelle P, welche ja nach Report übertragen werden in allen zeilen vorkommen in denen die selbe refnr. steht.
Beispiel:
In tabelle P kommt ja immer nur eine ref. nr. namens test1 vor. In Tabelle M können dafür mehrere daten unter test 1 stehen. Kann es so programmiert werden, dass die daten in der zeile test 1 auch in die anderen Zeilen mit test 1 übertragen werden sollen (im Report sheet). Dies soll allerdings nur für die Daten aus Tabelle P gehen und nicht aus Tabelle M?
Danke und Gruß
Anzeige
AW: Änderungen an bestehendem VBA Code
15.07.2011 00:40:59
Manu
Hey Mustafa,
Vielen dank für dein tollen code, du bist mein retter.
Kannst du mir vielleicht nochmal weiterhelfen?
Und zwar möchte ich nun noch, dass die daten aus tabelle P, welche ja nach Report übertragen werden in allen zeilen vorkommen in denen die selbe refnr. steht.
Beispiel:
In tabelle P kommt ja immer nur eine ref. nr. namens test1 vor. In Tabelle M können dafür mehrere daten unter test 1 stehen. Kann es so programmiert werden, dass die daten in der zeile test 1 auch in die anderen Zeilen mit test 1 übertragen werden sollen (im Report sheet). Dies soll allerdings nur für die Daten aus Tabelle P gehen und nicht aus Tabelle M?
Danke und Gruß
Anzeige
Anpassung des VBA Codes --dringend--
15.07.2011 09:37:22
Manu
Hallo zusammen,
ich habe den vorherigen code von mustafa nun auf meine bedürfnisse angepasst, siehe unten.
Nun möchte ich noch, dass aus Tabelle Prüfberichte auch alle Inhalte zeileninhalte pro Ref.nr. in die Tabelle Report übertragen werden. Was für Änderungen muss man dafür vornehmen.
Könnt ihr mir bitte weiterhelfen... ich bin am verzweifeln.
Gruß
Manu
Sub tabellen_zusammenfassen()
Dim refNr As Range, sNr As Range
Dim lZeile1 As Long, lZeile2 As Long, lZeile3 As Long
Dim wks1 As Worksheet, wks2 As Worksheet, wks3 As Worksheet
Set wks1 = Worksheets("Report")
Set wks2 = Worksheets("Prüfberichte")
Set wks3 = Worksheets("Maßnahmen")
lZeile1 = wks1.Cells(Rows.Count, 1).End(xlUp).Row
lZeile2 = wks2.Cells(Rows.Count, 1).End(xlUp).Row
lZeile3 = wks3.Cells(Rows.Count, 1).End(xlUp).Row
If Not lZeile1 = 1 Then wks1.Range(wks1.Cells(2, 1), wks1.Cells(lZeile1, 18)).ClearContents
lZeile1 = 2
For Each refNr In wks2.Range(wks2.Cells(2, 1), wks2.Cells(lZeile2, 1))
If refNr  "" Then
wks1.Cells(lZeile1, 1) = refNr.Value
wks1.Cells(lZeile1, 2) = refNr.Offset(0, 1)
wks1.Cells(lZeile1, 3) = refNr.Offset(0, 2)
wks1.Cells(lZeile1, 4) = refNr.Offset(0, 3)
wks1.Cells(lZeile1, 5) = refNr.Offset(0, 4)
wks1.Cells(lZeile1, 6) = refNr.Offset(0, 5)
wks1.Cells(lZeile1, 7) = refNr.Offset(0, 6)
wks1.Cells(lZeile1, 8) = refNr.Offset(0, 7)
wks1.Cells(lZeile1, 9) = refNr.Offset(0, 8)
wks1.Cells(lZeile1, 10) = refNr.Offset(0, 9)
For Each sNr In wks3.Range(wks3.Cells(2, 1), wks3.Cells(lZeile3, 1))
If refNr = sNr Then
wks1.Cells(lZeile1, 1) = sNr.Value
wks1.Cells(lZeile1, 11) = sNr.Offset(0, 1)
wks1.Cells(lZeile1, 12) = sNr.Offset(0, 2)
wks1.Cells(lZeile1, 13) = sNr.Offset(0, 3)
wks1.Cells(lZeile1, 14) = sNr.Offset(0, 4)
wks1.Cells(lZeile1, 15) = sNr.Offset(0, 5)
wks1.Cells(lZeile1, 16) = sNr.Offset(0, 6)
wks1.Cells(lZeile1, 17) = sNr.Offset(0, 7)
wks1.Cells(lZeile1, 18) = sNr.Offset(0, 8)
lZeile1 = lZeile1 + 1
End If
Next
lZeile1 = lZeile1 + 1
End If
Next
Set wks1 = Nothing
Set wks2 = Nothing
Set wks3 = Nothing
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige