Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function LastRow(sh As Worksheet)
- On Error Resume Next
- LastRow = sh.Cells.Find(What:="*", _
- After:=sh.Range("A1"), _
- LookAt:=xlPart, _
- LookIn:=xlFormulas, _
- SearchOrder:=xlByRows, _
- SearchDirection:=xlPrevious, _
- MatchCase:=False).Row
- On Error GoTo 0
- End Function
- Sub przesuniecia()
- ' przesuniecia Makro
- Dim Start As Single
- Dim Koniec As Single
- Start = Timer
- Dim lark As Long
- Dim lexport As Long
- Dim klucz As String
- Dim nazwa As String
- Dim partia As String
- Dim indeks As String
- Dim skład As String
- Dim sprzedaz As String
- Dim i As Long
- Dim j As Long
- Dim ruch As String
- Dim zam As String
- Dim wierszk As Long
- Dim ilosc As Integer
- Dim czyznalazlo As Boolean
- Dim czyznalazlo2 As Boolean
- Dim pom As Long
- Dim pom2 As Long
- Dim bylo As String
- Dim odbmat As String
- Dim pktroz As String
- Dim jest As String
- Dim dzientyg As Integer
- Dim dataspr As Date
- dzientyg = Weekday(Date)
- If dzientyg = 2 Then
- dataspr = Date - 3
- Else
- dataspr = Date - 1
- End If
- czyznalazlo = False
- ilosc = 1000
- Windows("export.xlsm").Activate
- Worksheets("export").Activate
- lexport = LastRow(Worksheets("export")) 'zlicza ilosc ruchow
- Windows("KOMUNALNE.xlsm").Activate
- lark = Sheets.Count ' zlicza ilosc zakladek w komunalnym
- Windows("export.xlsm").Activate
- Worksheets("export").Activate
- Range("R1").Select
- ActiveCell.FormulaR1C1 = "Odbiorca"
- Range("R2").Select
- ActiveCell.FormulaR1C1 = _
- "=IFERROR(IF(RC[-16]=""601"",VLOOKUP(CONCATENATE(RC[-17],RC[-5]),dane!R2C45:R46000C46,2,0),""""),""nie znalazło sprzedanego asortymentu"")"
- Range("R2").Select
- Selection.AutoFill Destination:=Range("R2:R" & lexport), Type:=xlFillDefault
- Range("P2").Select
- ActiveCell.FormulaR1C1 = _
- "=IFERROR(VLOOKUP(LEFT(RC[-15],7),slownik!R1C1:R200C2,2,0), "" nie znalazło zakładki"") "
- Range("P2").Select
- Selection.AutoFill Destination:=Range("P2:P" & lexport), Type:=xlFillDefault
- Columns("P:P").Select
- Selection.NumberFormat = "@"
- For i = 2 To lexport Step 1 ' leci pętla po ruchach
- Windows("export.xlsm").Activate
- Worksheets("export").Activate
- klucz = Worksheets("export").Cells(i, 16)
- sprzedaz = Worksheets("export").Cells(i, 18)
- partia = Worksheets("export").Cells(i, 13)
- odbmat = Worksheets("export").Cells(i, 12)
- pktroz = Worksheets("export").Cells(i, 14)
- skład = Worksheets("export").Cells(i, 3)
- jest = skład
- ruch = Worksheets("export").Cells(i, 2)
- indeks = Worksheets("export").Cells(i, 1)
- ilosc = Worksheets("export").Cells(i, 9)
- For j = 1 To lark Step 1 ' szuka pojedynczego ruchu w pliku komuanlnym
- Windows("KOMUNALNE.xlsm").Activate
- czyznalazlo = False
- czyznalazlo2 = False
- nazwa = Worksheets(j).Name
- If (nazwa = klucz) Then 'wchodzi do zakladki z tym ruchem
- czyznalazlo2 = True
- Worksheets(j).Activate
- wierszk = LastRow(Worksheets(j))
- ' RUCH 311
- ' RUCH 413
- ' RUCH 314
- ' RUCH 313
- ' RUCH 315
- ' RUCH 316
- ' RUCH 305
- If ruch = "314" Or ruch = "413" Or ruch = "313" Or ruch = "315" Or ruch = "311" Or ruch = "316" Or ruch = "305" Or ruch = "301" Then ' sprawdza czy to ruch 413 314 313 315 305
- For k = 30 To wierszk Step 1 ' leci po wierszach w konkretnej zakładce i szuka partii
- If Worksheets(j).Cells(k, 1).Value = "x" Then
- k = wierszk
- Else
- If partia = Worksheets(j).Cells(k, 7) Then
- czyznalazlo = True
- If ilosc = 1 Or ilosc = 0 Then ' sprawdza czy ruch jest z 1 , 0 czy -1
- Worksheets(j).Cells(k, 7).Activate
- bylo = Worksheets(j).Cells(k, 6).Value
- Worksheets(j).Cells(k, 6).Value = skład
- If Left(Worksheets(j).Cells(k, 4).Value, 2) <> "g-" Then
- If Left(Worksheets(j).Cells(k, 1).Value, 14) <> indeks Then
- Worksheets(j).Cells(k, 1).Activate
- MsgBox "Kopiuje wiersz do bazy. Nie zgadza się indeks dla sprzetu: " & klucz & " dla partii " & partia
- Windows("export.xlsm").Activate
- Worksheets("export").Activate
- Rows(i).Select
- Selection.Copy
- Worksheets("niejasne").Activate
- Rows(2).Select
- Selection.Insert Shift:=xlDown
- End If
- Else
- If Left(Worksheets(j).Cells(k, 3).Value, 14) <> indeks Then
- Worksheets(j).Cells(k, 3).Activate
- MsgBox "Kopiuje wiersz do bazy. Nie zgadza się indeks dla sprzetu: " & klucz & " dla partii " & partia
- Windows("export.xlsm").Activate
- Worksheets("export").Activate
- Rows(i).Select
- Selection.Copy
- Worksheets("niejasne").Activate
- Rows(2).Select
- Selection.Insert Shift:=xlDown
- End If
- End If
- If InStr(1, Worksheets(j).Cells(k, 5).Value, "FPS", vbTextCompare) > 0 And bylo <> jest Then
- Worksheets(j).Cells(k, 13).Value = dataspr
- End If ' koniec ifa do daty przesunięcie
- End If ' koniec Ifa dla ilosci ruchu "1 "
- Exit For
- End If ' koniec IFa jesli znajdzie partie
- End If ' koniec dla elsa jesli jesli nie ma x
- Next ' koniec pętli dla konkrretnej zakładki
- If czyznalazlo = False Then
- MsgBox "Coś poszło nie tak ! Kopiuje wiersz do bazy. Nie znalazło partii dla partii: " & partia & " indeks: " & indeks & " sprzęt: " & klucz
- Windows("export.xlsm").Activate
- Worksheets("export").Activate
- Rows(i).Select
- Selection.Copy
- Worksheets("niejasne").Activate
- Rows(2).Select
- Selection.Insert Shift:=xlDown
- End If
- ' jesli nie znajdzie ruchu 413 to:
- ' RUCH 261
- ' RUCH 261
- ' RUCH 261
- ' RUCH 261
- ' RUCH 261
- ElseIf ruch = "261" Then
- For k = 30 To wierszk Step 1 ' leci po wierszach w konkretnej zakładce i szuka partii
- If Worksheets(j).Cells(k, 1).Value = "x" Then
- k = wierszk
- Else
- If partia = Worksheets(j).Cells(k, 7) Then
- czyznalazlo = True
- If Left(Worksheets(j).Cells(k, 4).Value, 2) <> "g-" Then
- Worksheets(j).Cells(k, 1).Select
- With Selection.Font
- .Color = -16776961
- .TintAndShade = 0
- End With
- End If ' koniec ifa dla <> g-
- End If
- End If ' koniec IFa jesli znajdzie partie
- Next ' koniec pętli
- If czyznalazlo = False Then
- MsgBox "Coś poszło nie tak ! Kopiuje wiersz do bazy. Zapewne dana maszyna jest już sprzedana. Sprawdź rekordy sprzedane. " & vbCrLf & "Nie znalazło partii: " & partia & "sprzet: " & klucz
- Windows("export.xlsm").Activate
- Worksheets("export").Activate
- Rows(i).Select
- Selection.Copy
- Worksheets("niejasne").Activate
- Rows(2).Select
- Selection.Insert Shift:=xlDown
- End If
- ' elseif
- ' MsgBox " nie jest to ruch 413 314 313 315 216"
- 'ruch 601
- 'ruch 601
- 'ruch 601
- 'ruch 601
- ElseIf ruch = "601" Or ruch = "551" Then
- For k = 30 To wierszk Step 1 ' leci po wierszach w konkretnej zakładce i szuka partii
- If Worksheets(j).Cells(k, 1).Value = "x" Then
- pom2 = k + 1
- k = wierszk
- Else
- If partia = Worksheets(j).Cells(k, 7) Then
- czyznalazlo = True
- pom = k
- Worksheets(j).Cells(k, 9).Value = 0
- Worksheets(j).Cells(k, 10).Value = 0
- Worksheets(j).Cells(k, 6).Value = skład
- zam = Worksheets(j).Cells(k, 8).Value
- Worksheets(j).Cells(k, 14).Value = dataspr
- Worksheets(j).Cells(k, 15).Value = sprzedaz
- Worksheets(j).Cells(k, 7).Select
- With Selection.Font
- .Color = -16776961
- .TintAndShade = 0
- End With
- With Selection.Interior
- .Pattern = xlSolid
- .PatternColorIndex = xlAutomatic
- .Color = 255
- .TintAndShade = 0
- .PatternTintAndShade = 0
- End With
- Worksheets(j).Cells(k, 9).Activate
- MsgBox "Zamówienie: " & zam & vbCrLf & " Sprzedaż do: " & sprzedaz
- Rows(k).Select
- Selection.Cut
- End If ' koniec IFa jesli znajdzie partie
- End If
- Next ' koniec pętli
- Rows(pom2).Select
- Selection.Insert Shift:=xlDown
- Rows(pom2 - 1).Select
- Selection.EntireRow.Hidden = True
- If czyznalazlo = False Then
- MsgBox "Coś poszło nie tak ! kopiuje wiersz do bazy. Zapewne dana maszyna jest już sprzedana. Sprawdź rekordy sprzedane. Nie znalazło partii dla ruchu: " & partia & "sprzęt: " & klucz
- Windows("export.xlsm").Activate
- Worksheets("export").Activate
- Rows(i).Select
- Selection.Copy
- Worksheets("niejasne").Activate
- Rows(2).Select
- Selection.Insert Shift:=xlDown
- End If
- ' elseif
- ' MsgBox " nie jest to ruch 413 314 313 315"
- ' koniec ruchu 601
- ' koniec ruchu 601
- ' koniec ruchu 601
- ' koniec ruchu 601
- ' koniec ruchu 601
- 'ruch 101
- 'ruch 101
- 'ruch 101
- 'ruch 101
- 'ruch 101
- 'ruch 101
- ElseIf ruch = "101" Or ruch = "531" Or ruch = "521" Then
- For k = 30 To wierszk Step 1 ' leci po wierszach w konkretnej zakładce i szuka partii
- If Worksheets(j).Cells(k, 1).Value = "x" Then
- k = wierszk
- Else
- If Worksheets(j).Cells(k, 10) <> "1" Then
- pom = k
- Worksheets(j).Cells(k, 10).Activate
- MsgBox "Ostatni wiersz niemagazynowy to: " & pom
- Exit For
- End If
- ' koniec IFa jesli znajdzie partie
- End If
- Next ' koniec pętli
- Dim wsMsgBox As Object
- Set wsMsgBox = CreateObject("WScript.Shell")
- Dim mbResult As Integer
- 'wyświetlamy okienko określając jego parametry
- Worksheets(j).Cells(k, 10).Activate
- mbResult = wsMsgBox.Popup("Ruch 101! " & vbCrLf & " Sprzęt: " & klucz & vbCrLf & " partia: " & partia & " indeks: " & indeks & vbCrLf & " Nic nie klikaj ! Znajdź wpierw numer wiersza, gdzie mam wstawić ruch 101, a nastepnie kliknij OK, by wprowadzić numer." & vbCrLf & " Kliknij Anuluj,by nie wstawiać ruchu 101.", _
- iTime, "Ruch 101!", 1)
- Select Case mbResult
- Case 2
- MsgBox "Nigdzie nie wstawiam ruchu 101. Kopiuje wiersz do bazy."
- Windows("export.xlsm").Activate
- Worksheets("export").Activate
- Rows(i).Select
- Selection.Copy
- Worksheets("niejasne").Activate
- Rows(2).Select
- Selection.Insert Shift:=xlDown
- Case 1
- Dim StrName As Integer 'deklarujemy zmienną imię
- StrName = InputBox("Wprowadź numer wiersza, gdzie mam dodać ruch 101 (sprzęt, partia, indeks)") & klucz & " " & partia & "indeks " & indeks 'wprowadzamy wartość dla naszej zmiennej z okna InputBox
- MsgBox ("Wprowadzam ruch 101 w wierszu: " & StrName & vbCrLf & "Miłego dnia!") 'prezentujemy komunikat
- Worksheets(j).Cells(StrName, 9).Value = ""
- Worksheets(j).Cells(StrName, 10).Value = 1
- Worksheets(j).Cells(StrName, 6).Value = skład
- If indeks = Left(Worksheets(j).Cells(StrName, 3).Value, 14) Then
- Worksheets(j).Cells(StrName, 4).Value = "g-" & dataspr
- Worksheets(j).Cells(StrName, 1).Select
- With Selection.Font
- .Color = vbBlack 'kolor
- End With
- End If
- Worksheets(j).Cells(StrName, 7).Value = partia
- Worksheets(j).Cells(StrName, 7).Select
- With Selection.Font
- .Color = vbBlack 'kolor
- End With
- zam = Worksheets(j).Cells(StrName, 8).Value
- Worksheets(j).Cells(StrName, 11).Value = dataspr
- Worksheets(j).Cells(StrName, 12).Value = Year(dataspr)
- If (StrName <> pom) Then
- Rows(StrName).Select
- Selection.Cut
- Rows(pom).Select
- Selection.Insert Shift:=xlDown
- End If
- If (StrName >= pom) Then ' zle zaznaczalo obszar do sortowania
- Worksheets(j).Cells(pom, 5).FormulaR1C1 = _
- "=VLOOKUP(TEXT(R[0]C[1],0),'\\192.168.15.25\Analizy\RÓŻNE\Ad_stan_mag\SkladC.xls'!id,2,FALSE)"
- MsgBox "ostatni wiersz do sortowania to : " & pom
- Rows("30:" & pom).Select
- ActiveWorkbook.Worksheets(j).sort.SortFields.Clear
- ActiveWorkbook.Worksheets(j).sort.SortFields.Add Key:=Range( _
- "G30:G" & pom), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
- xlSortNormal
- With ActiveWorkbook.Worksheets(j).sort
- .SetRange Range("A30:AJ" & pom)
- .Header = xlGuess
- .MatchCase = False
- .Orientation = xlTopToBottom
- .SortMethod = xlPinYin
- .Apply
- End With
- Else ' jkesli numer wiersza wstawionego byl mniejszy od ostatniego z 1 to wowczaas zakres ost -1
- Worksheets(j).Cells(pom - 1, 5).FormulaR1C1 = _
- "=VLOOKUP(TEXT(R[0]C[1],0),'\\192.168.15.25\Analizy\RÓŻNE\Ad_stan_mag\SkladC.xls'!id,2,FALSE)"
- MsgBox "ostatni wiersz do sortowania to : " & pom - 1
- Rows("30:" & pom - 1).Select
- ActiveWorkbook.Worksheets(j).sort.SortFields.Clear
- ActiveWorkbook.Worksheets(j).sort.SortFields.Add Key:=Range( _
- "G30:G" & pom - 1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
- xlSortNormal
- With ActiveWorkbook.Worksheets(j).sort
- .SetRange Range("A30:AJ" & pom - 1)
- .Header = xlGuess
- .MatchCase = False
- .Orientation = xlTopToBottom
- .SortMethod = xlPinYin
- .Apply
- End With
- End If
- End Select
- Else ' gdy nie obsluzy danego ruchu kopiuje do niejasnych, nie ma zdefiniowanego takiego ruchu
- MsgBox " nie mam w bazie ruchu " & ruch & " dla partii " & partia & " dla sprzętu " & klucz & vbCrLf & "Kopiuje zatem ruch do bazy"
- Windows("export.xlsm").Activate
- Worksheets("export").Activate
- Rows(i).Select
- Selection.Copy
- Worksheets("niejasne").Activate
- Rows(2).Select
- Selection.Insert Shift:=xlDown
- End If ' koniec spraewdzania jaki to numer ruchu
- ' KONIEC RUCHU 413
- ' KONIEC RUCHU 413
- ' KONIEC RUCHU 413
- Exit For 'wyjscie z pętli jesli znajdzie zakładke o podanym asortymencie, po co ma gonic do konca
- End If ' koniec Ifa dla danej zakładki czy zakladka = PUV4000
- Next ' przewin zakladke w komunalnym do przodu
- If czyznalazlo2 = False Then
- MsgBox "Coś poszło nie tak ! Nie znalazło zakładki: " & klucz & " partia " & partia & "indeks" & indeks & vbCrLf & "nie mam w bazie ruchu " & ruch & " dla partii " & partia & " dla sprzętu " & klucz & vbCrLf & "Kopiuje zatem ruch do bazy"
- Windows("export.xlsm").Activate
- Worksheets("export").Activate
- Rows(i).Select
- Selection.Copy
- Worksheets("niejasne").Activate
- Rows(2).Select
- Selection.Insert Shift:=xlDown
- End If
- Next ' przewin do kolejnego ruchu z exportu SAP
- Koniec = Timer
- MsgBox "Czas wykonywania programu: " & Format(Koniec - Start, "0.00") & " s"
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement