Hallo zusammen!
ich habe ein Problem! und zwar geht es darum, dass ich aus einem Workbook (Source) in einem bestimmten Worksheet mit sehr vielen Daten an den Daten interessiert bin, die in der Spalte A sagen wir mit der Buchstabe "CA" belegt sind.
In dieser Spalte des Worksheets sind die CAs willkuerlich verteilt. Das heisst z,b. Zeile 1 bestit in der Spalte A (A1) ein CA dann wieder Zeile 5 (A5) und dann wieder 13 (A13) usw.
Ich hole mir diese Zeile und fuege sie in einem anderen neuen Workbook (Destination) mit einem anderen Pfad in einem der Wokrsheets an der erste freie nicht belegte Zeile.
Das ist der Plan! aber er geht noch nicht auf.
Ich habe dazu einen Teil meines Programmes herauskopiert und hoffe ihr koennt mir helfen.
Ich komme leider aus dieser Do-Loppschleife nicht mehr raus. Es wiederholt sich immer und immer wieder! Ich weiss zusaetzlich nicht ob das der richte weg ist.
Danke fuer eure Hilfe!
Der Code:
'opening the source
Workbooks.Open (Sourcepath & "\" & file)
Workbooks(file).Activate
'sourcesheet
Set source_ws = Sheets("MY" & MY & " Sales as of " & CY & "_Q" & Q)
source_ws.Activate
s = 1
'da ich nicht will, dass das progamm tausende zellen immer durchsucht
'finding last row in sourcesheet
Last = Range("A:A").Find(What:="*", After:=Range("A" & s), LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:= _
False, SearchFormat:=False).row
Do
Workbooks(file).Activate
Set source_ws = Sheets("MY" & MY & " Sales as of " & CY & "_Q" & Q)
source_ws.Activate
'Finds range of sales data for State
row = Range("A:A").Find(What:="CA", After:=Range("A" & s), LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).row
'next blank row in destination sheet
Workbooks("Modelcodes and Wholesale for CA.xlsm").Activate
Set dest_ws = Sheets("overview")
dest_ws.Activate
Lastrow = ActiveSheet.UsedRange.Rows.Count
dest_ws.Cells(Lastrow, 1) = source_ws.Cells(row, 2)
'last CA in the sheet
Workbooks(file).Activate
Set source_ws = Sheets("MY" & MY & " Sales as of " & CY & "_Q" & Q)
source_ws.Activate
LastCA = Range("A:A").Find(What:="CA", After:=Range("A" & s), LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:= _
False, SearchFormat:=False).row
'exiting loop
If row = LastCA Then Exit Do
's = row
Loop 'Until s <= Last
Alternativ habe ich mir auch diesen Code euberlegt. Er funktioniert leider auch nicht. Dabei weiss ich leider nicht einmal ob ich auf dem richtigen Weg bin.
'dadurch, dass es zwei unterschiedliche Workbook mit unterschiedlichen Pfads
'(sourcesheet und destinationsheet) sind muesste ich doch erst das workbook und
'dann das sheet offnen aus denen ich etwas herauslesen will?
'oeffnen bevor ich den code starte. also erstmal schreiben:
file = "Bikes.xlsm"
'opening the source
Workbooks.Open (Sourcepath & "\" & file)
Workbooks(file).Activate
'das ist mein sourcesheet
Set source_ws = Sheets("MY" & MY & " Sales as of " & CY & "_Q" & Q)
source_ws.Activate
'dann kommt:
Dim bleibt As Range
With ActiveSheet.Columns(1)
On Error Resume Next
Set bleibt = .ColumnDifferences(.Find("CA", LookIn:=xlValues, lookat:=xlWhole, MatchCase:=True))
On Error GoTo 0
If Not bleibt Is Nothing Then bleibt.EntireRow.Hidden = True
.SpecialCells(xlCellTypeVisible).EntireRow.Copy
'bisher wird die zeile gesuch und kopiert kopiert?
'um sie dann in dem anderen workbook mit einem neuen pfad einzufuegen und zwar an erste freie stelle muesste ich doch jetzt erst dieses oeffnen und dann auch
'noch den sheet oder?
'also folgendes machen:
'opening destination workbook
Workbooks("Codes for CA.xlsm").Activate
'destination sheet bestimmen
Set dest_ws = Sheets("CA")
dest_ws.Activate
'und anschliessend:
'diese Zeile ist mir leider absolut unklar. ich verstehe nicht was hier genau gemacht wir
Sheets(.Parent.Next.Index).Cells(Sheets(.Parent.Next.Index).Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial
Application.CutCopyMode = False
.EntireRow.Hidden = False
End With
ErrMsg:
MsgBox ("Cannot find Workbook, check path and filename, and try again")
Exit Sub
End Sub
Danke fuer eure Hilfe
B.
|