PDA

Vollständige Version anzeigen : Aus allen Arbeitsblätter auslesen, wenn () erfüllt


michael_buller
05.05.2009, 05:24
Hallo Leute,

ich bin dabei mich in VBA mehr und mehr zurecht zu finden, aber hier hakt es gerade bei mir.

Ich möchte ein Programm schreiben, das automatisch in allen Arbeitsblättern die Spalte D überprüft ob der Wert "P00.0815" enthalten ist. Wenn ja, soll das Programm die Zelle "B (Abhängigkeit von der Zeile)"ein Arbeitsblatt namens "main" kopieren. Es gibt mehrere Einträge in verscheidenen Arbeitsblättern in der Spalte D die "P00.0815" sind.

Ziel ist es, dass man ein Projekt auswählt Bsp. "P00.0815" und dann in Arbeitsblatt "main" alle zugehörigen Zellen "B()" die dieses Projekt auflistet.

Ich hoffe es ist klar, was ich für ein Problem habe und ich hoffe ihr könnt mir helfen.

DANKE schonmal im vornherein


PS: Ihr könnt einem Trainee in Malaysia helfen, der nur eine Modem Connection hat ^^ :D

Gruß aus Malaysia

jinx
05.05.2009, 05:40
Moin, Michael,

eine Schleife über alle Tabellen, Vergleichen des Blattnamens (muss ungleich Main sein), Anwenden des Autofilters und bei vorhandenen Einträgen Kopieren des sichtbaren Bereiches in Tabelle Main...

michael_buller
05.05.2009, 06:21
Hi,

kannst mir vllt. ungefähr nen VBA code geben ? - ich arbeite seit ca. einer Woche mit VB und bin noch dabei alles zu verstehen, aber codes nachzuvollziehen fällt mir leichter als derzeit selber welche zu schreiben.

Wäre über diese Hilfe sehr dankbar (weiß z.B. nicht wie ich nach dem Autofilter die Daten rüberkopiere etc.)

DANKE :D

hary
05.05.2009, 07:42
Hi Michael
mal ein kleines beispiel mit einer Tab.
Hab's so fertig gehabt, im Moment wenig Zeit
vileicht ein schritt weiter
Gruss hary

michael_buller
05.05.2009, 08:15
Besten Dank schonmal :D - ich werde mir die Datei mal runterladen (auch wenn das hier bestimmt ne halbe Stunde oder so dauert ^^ :D)

ich denke ich hoffe ich kann was damit hinbekommen, sonst melde ich mich nochmal ;)

thx'a'lot

hary
05.05.2009, 08:36
Hi Michael
dann machen wir's anders. Nimm eine leere mappe mit 3 Tab. In Tab1 und 2 fuegst Du in SpalteB irgendwas ein. In SpalteD Deine P00.0815.
Nimm diesen Code ins Makro.

Sub Makro1()
Dim Zelle As Long
Dim wks As Worksheet
On Error Resume Next
Application.ScreenUpdating = False
For Each wks In ThisWorkbook.Worksheets
If wks.Name <> ActiveSheet.Name Then
With wks
Zelle = Sheets("Tabelle3").Cells(Rows.Count, 2).End(xlUp).Row + 1
wks.Range("$B$1:$D$10").AutoFilter Field:=3, Criteria1:="P00.0815"
wks.Columns("B:B").Copy Sheets("Tabelle3").Range("B" & Zelle)
wks.Columns("D:D").Copy Sheets("Tabelle3").Range("B" & Zelle).Offset(, -1)
wks.Select
Selection.AutoFilter
End With
End If
Next
Application.ScreenUpdating = True
End Sub
Gehe nach Tab3 und starte das Makro(gilt jetzt fuer alle Tabellen)
Habe nicht an Dein Modem gedacht!
Gruss Hary

michael_buller
06.05.2009, 03:12
DANKE :D


PS: Modem wäre ja super :D ^^ lade hier oft mit 40 byte/s !!! ja, nicht kB :D
die Menschen hier haben aber scheinbar eh für alles sehr sehr sehr viel Zeit :)


Gruß aus Malaysia

hary
06.05.2009, 04:59
Moin oder Nabend Michael(je nach dem)
War's das in etwa was Du suchtest. Wenn nicht noch mal melden.
Im Moment wuerde ich gerne den kalten,nassen Norden gegen den warmen, langsamen Standort von Dir Tauschen.
Gruss hary