Bez sprawdzania [syntax=vbscript]Dim kom As Range For i = LBound(tblArkusze()) To UBound(tblArkusze()) With Sheets(tblArkusze(i)) Set rngTmp = .Range("O2:O" & Cells(.Rows.Count, "B").End(xlUp).Row) With rngTmp.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$BY$2:" & Range("BY2").End(xlDown).Address...
Kod czego ... pętli ... tablicy ? Pętli przecież masz, a tablica niekoniecznie potrzebna, można np. tak (o ile problem poprawnie opisany): [syntax=vbscript]Option Explicit Private Sub CommandButton2_Click() Const pth = "P:\RAPORT\" Const fle = "Plan wk" Const sht = "Main sheet" Const fsht = "R" Dim x As Integer, week As Integer Dim dzientygodnia As...
Czułem, że trzymasz coś w rękawie ;) Z takim pryszczem poradziłabyś sobie. Spróbuj takiej pętelki [syntax=vb]Sub Merguj() Dim wrs As Long, merg As Long wrs = 1 merg = wrs Application.DisplayAlerts = False Do While Cells(wrs, 1) <> "" If Cells(wrs, 1) <> Cells(wrs + 1, 1) Then With Range(Cells(merg, 1), Cells(wrs, 1)) .Merge .HorizontalAlignment...
:arrow: Do autora: Dobrze podstawiłeś to makro? W załączeniu przykład z działającym makrem kolegi adamas_nt Poprawiłem tylko to, że nie liczy dla 100 wierszy tylko dla wszystkich wierszy w kolumnie A zeszytu1. Dodane po czasie ----------------------------- Zmieniłeś treść wiadomości więc moja uwaga nie ma już uzasadnienia, niemniej pozostawiam przykład...
Napisałeś pętlę nieskończoną. Nie do końca łapię co chcesz zrobić. Może wystarczy licznik pętli przesunąć poza gałąź If Do Until ActiveSheet.Range("A" & i) = "" Or ActiveSheet.Range("A" & i + 1) = "" If Range("A" & i).Value = 37258 Then Range("A" & i + 1).EntireRow.Insert...
1. pobiera listę plików .xlsx w folderze 2. usuwa zakładki, tworzy nowe i orzenosi dane z pobranego pliku z folderu 3. przenosi dane z jednej zakładki do finalnej KOR 4. przenosi poszczególne wiersze z zakładki RAT do zakładki KOR do tego samego wiersza jako kolejne kolumny 5. tworzy nowy plik z danymi z zakladki KOR, zapisuje i przechodzi do pkt 1...
Skoro raport ma 300000 wierszy, to zmienna i musi być zadeklarowana jako long. W którym miejscu Twoje makro się zatrzymuje? A tak w ogóle to zamiast mozolnego porównywania każdej komórki z elementami tablicy przy pomocy pętli to poszedłbym w sprawdzenie przy pomocy odpowiednika arkuszowej funkcji PODAJ.POZYCJĘ czy wartość danej komórki jest w tablicy....
a co masz na myśli mówiąc "...podstawiać formuły w osobnej pętli"? Wstaw kolumny, wpisz ręcznie formuły sumowania i przepisz argumenty do makra. Po zakończeniu pętli wstawiającej kolumny i nagłówki (usuń linię z wstawianiem sum), dopisz następną wpisującą tylko formuły.
Przecież już tą kwestię Ci rozwiązałem w makrze kilka pozycji do góry. Chodzi o to makro pracujące w pętli for. Należy tylko podać w pętli for argument jak wiele artykułów ma sprawdzać. Można też to makro rozbudować aby samo sprawdzało ile jest rekordów i zapisywało do zmiennej.
Jakiś program typu Macro Recorder Lite i musiałbyś "nagrać" sobie makro w pętli z całym procesem czynności jakie chcesz, żeby wykonywało. Dokładniej musiałbyś po kolei nagrać co chcesz, kliknięcie po kliknięciu, powtórzyć dla wszystkich plików i zapisać. Ograniczenie jest takie, że makro zrobi wszystko co nagrasz, ale tylko w swoim "polu roboczym" i...
W każdy przebiegu pętli zanim zaczniesz zaznaczać wiersze. Inaczej skąd program ma wiedzieć, że chcesz zaznaczać w innym arkuszu?
Zastanów się, czy makro toggle jest operacją atomową. W tym kodzie można tą operację rozbić na 3 etapy: pobranie IO_PORT, zanegowanie bitu oraz zapisanie IO_PORT. Jeśli przerwanie wystąpi pomiędzy pobraniem a zapisaniem IO_PORT, przerwanie spowoduje zmianę stanu pinu, ale zaraz po powrocie nastąpi wpisanie nowej wartości z IO_PORT, z którą wiąże się...
Użyj pętli For, wyłączając arkusz docelowy w instrukcji warunkowej. [url=http://www.elektroda.pl/rtvforum/to...
Zmienna 'tblArkusze' jest tablicą przecież. Musisz w pętli [syntax=vbscript]For i = LBound(tblArkusze) To UBound(tblArkusze) With Sheets(tblArkusze(i)) .Cells.Clear .AutoFilterMode = False End With Next[/syntax]
1. Zamknij wszystko w jednej pętli For rozpoczynając z wartością licznika 0. 2. Jeśli wartość nie zostanie znaleziona w kolumnie A makro wywali błąd. Wskazane zabezpieczenie z warunkowym wyjściem (obsługa błędów). 3. Wyjście warunkowe (x="") z pętli For ! Zewnętrzna pętla Do jest zupełnie zbędna. p.s. Co tam masz w tym pliku, że żądasz zapłaty?
Czemu jak już zrobiłeś przykład nie załączyłeś go do postu? (spakuj na przyszłość zipem i załącz) Po prostu wykorzystaj funkcję wyszukaj.pionowo() Zamknąłem w pętli i sprawdza po kolumnie M czy wysłano (dlatego tez na końcu pyta czy wysłałeś. Poniżej z paroma "wodotryskami". Makro nie sprawdza poprawności adresu mailowego więc jeżeli będzie zły a ty...
Na początku pętli [syntax=vbscript]Do While Len(ws_src.Range("E" & i)) > 0[/syntax]jest sprawdzany warunek czy długość zapisu w kolumnie E jest > 0. Eliminuje to przypadki pustych komórek i pustych tekstów. Gdybyś jeszcze chciał sprawdzać wartości zerowe to trzeba dodać nowy warunek pod spodem: [syntax=vbscript]If ws_src.Range("E" & i) = 0 Then Exit...
czas wykonania procedury skrócił się z 10 minut do 1,01 minuty Aż za bardzo ;) Można też wcześniej obliczyć sumę z pierwszych pętli (wynik częściowy)... to nie za bardzo rozumiem jakby to miało wyglądać w kodzie by było efektywne Myślałem o tej linii: If x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 = 34 Then Ty poszedłeś po całości ;) Jeśli zapamiętalibyśmy...
Tak, oczywiście jest możliwe. Najprościej używając funkcji Dir w pętli Do Until , jednocześnie zmieniając nazwy kopiowanym arkuszom wg. aktualnie otwartego, pliku źródłowego.
Czyli algorytm mniej więcej taki: 1. Wyszukujesz ostatni arkusz i zapamiętujesz jego nazwę w zmiennej tekstowej, np Src. Metoda wyszukania dowolna, arkuszy jest zwykle nie tak dużo, można przejrzeć w pętli wszystkie. 2. Tworzysz w zmiennej np Dst nazwę nowego arkusza i tworzysz arkusz z taką nazwą: Sheets.Add.Name = Dst 3. Kopiujesz dane z jednego arkusza...
Jeśli znaki "<" oraz ">" występują tylko jako "nawiasy" znaczników i nigdzie więcej, to można w prosty sposób skorygować pętlę Do , umieszczając warunek i polecenie wyjścia z pętli wewnątrz niej. Rezygnujemy wtedy z tablicy i określamy początek i koniec fragmentu do pogrubienia wg wspomnianych znaków.
Ale mnie chodzi o Makro wstawiające do bieżącego Skoroszytu (Zeszytu) Makro we we właściwości: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) No i w czym problem? Ja podobnie jak adamas_nt nie rozumiem problemu... plik1.xls ok plik2.xls ok plik3.xls ok
Pożądany efekt aktualizacji tabeli w arkuszu "3" 961000 można uzyskać poprzez makro aktualizujące (odświeżanie danych skrótem ctrl + a :D ) z zastosowanie pętli typu: 961004
Z tymi -1,1,0 chodzi o to, że tylko te liczby wchodzą w ciąg 5 elementowy (liczbę L u nas ) czyli moze byc np -1,0,1,0,-1. Już rozumiem. Niestety w tym przypadku moje rozwiązanie przy wystąpieniu "-1" rozjedzie się, więc trzeba je skorygować. Pytanie czy dane w jednej komórce (dana "liczba" ) są takie jak przedstawiłeś w przykładzie czyli cyfry rozdzielone...
Dzień dobry, Bardzo proszę o pomoc z makrem, potrzebuje pętle które będzie miała za zadania kopiowanie i wklejanie w odpowiednie komórki między arkuszami aktualnie mam napisane makro ale niestety sam nie potrafię jeszcze stworzyć takiej pętli Dodano po 3 Mam już coś takiego ale jeszcze nie jest to co bym chciał osiągnąć Potrzebuje dla następnego wiersza...
Witam, fajne kolejne propozycje Dar.El ;) ... teraz coś ode mnie, myślę wprawdzie, że to makro nie będzie już tak uniwersalne jak poprzednio zaproponowane, ale idąc za ciosem, bo było mi to akurat często potrzebne: ;Increment, Jump if No HIGH ; IJNH licznik,etykieta pętli ; licznik - tylko rejestry R16 - R31 .MACRO IJNH INC (at)0 CPI (at)0, 255 BRNE...
1. Załóż filtr w oryginalnej tabeli (niepuste) -> zaznacz całą tabelę i wtedy dopiero kopiuj dane . Może nawet lepiej wklejać "tylko wartości" niż dane z pełnym formatem każdej kopiowanej komórki. Zrobisz to w jednym ruchu zamiast korzystać z pętli (2000 razy). Po nagraniu makra można edytować zaznaczony zakres tak, żeby najlepiej nam odpowiadał. 2....
Może przez szukanie w pętli z wykorzystaniem obsługi błędu. Np[syntax=vb]On Error Resume Next Do While Err = 0 kol = Rows(1).Find(what:="MSISDN", lookat:=xlWhole).Column kol = Rows(1).Find(what:="Kod Sprzedawcy", lookat:=xlWhole).Column Columns(kol).Delete Loop[/syntax]
Jak Ci wierszy przybędzie do miliona, to zaczniesz myśleć, dlaczego to tak długo liczy...;) Ale jeżeli już chcesz tak, to nie sprawdzaj w każdym przejściu pętli, czy komórka jest różna od pustej, tylko wylicz wartość końcową pętli na przykład tak: [syntax=vb] For x = 2 To Cells(Rows.Count, "A").End(xlUp).Row Cells(x, 1) = "=IF(RC[1]<>"""",R[-1]C+1,"""")".....
No cóż, opis nie jest bardzo czytelny, ale jeśli taki miał być efekt: https://obrazki.elektroda.pl/4588789900_... to kod, który to zrealizuje może wyglądać następująco: [syntax=vbscript] Sub FZ() r = 1 'kolejny sprawdzany wiersz (row) rstart = 0 'numer pierwszego w serii wiersza do którego wklejam wartości, jednocześnie numer wiersza...
Do pierwszego możesz użyć funkcji RIGHT (zakładając że tydzień jest dwucyfrowy i zawsze na końcu) tydzien = Right(wartosc_komorki, 2) Do drugiego: albo użyć przycisku którego kliknięcie wywołuje makro dodające nową osobę do zakłądki "status" i "zasoby", albo spróbować obsłużyć zdarzenie Worksheet_Change zawężone do kolumny gdzie jest nazwisko....
Jeśli nie miałeś do czynienia z formularzami, to najprościej zamknąć InputBox w pętli w Thisworkbook, przy zdarzeniu Open. Coś jak[syntax=vb]With Sheets("NazwaArkusza") For i = to 10 .Cells(i, 2)= Inputbox ("Wpisz wartość dla komórki B" & i) Next .activate End With[/syntax]Dograj sobie rejestratorem polecenie drukowania, lub po aktywowaniu arkusza naciśnij...
Zwykle na czas działania pętli wystarcza wyłączenie zdarzeń i odświeżania.[syntax=vb]Sub Kasuj() Application.EnableEvents = False Application.ScreenUpdating = False For i = Cells(65536, "A").End(xlUp).Row To 3 Step -1 If Cells(i, "B").Value = "" Then Rows(i).delete shift:=x1Up End If Next Application.EnableEvents = True Application.ScreenUpdating =...
Najprościej. Tę linię wkb.Sheets(ark).Cells(ostWrs... 1) = ActiveWorkbook.Sheets("Ogólne&q... przesuń do bloku pętli For j [syntax=vb] For j = 1 To 20 wkb.Sheets(ark).Cells(ostWrs, 1) = ActiveWorkbook.Sheets("Ogólne").Range("A... 'TUTAJ wkb.Sheets(ark).Cells(ostWrs, j + 1) = .Cells(k, j + 2)...
Zdaje się, że zapętlasz się w nieskończoność. Ale bez analizy krok po kroku (klawisz F8), trudno coś powiedzieć pewnego. Pierwsze co rzuciło się w oczy to : [syntax=vb]ZnajdzNast = InStr(ZnajdzStop, Dokument, PozPocz, vbTextCompare)[/syntax]Gdzie przy następnym przebiegu: [syntax=vb]ZnajdzStart = InStr(ZnajdzNast, Dokument, PozPocz, vbTextCompare)[/syntax]To...
No właśnie. To może być to. U mnie (po zmianie na październik) działa. Ale, uwaga, format daty systemowej mam zgodny z tym w CSV (Vista 32bit, Office 2007). Bo przy konwersji daty w "odwrotnym" formacie, Np z listopada może zrobić się marzec: https://obrazki.elektroda.pl/1929850600_... Tak się jeszcze zastanawiam. Zamiast porównywać...
Co do zasad pisania kodu Jak już deklarujesz zmienne to powinieneś deklarować wszystkie. Zapomniałeś o zmiennej "mnoznik" i chyba błąd w nazwie zmiennej lastcell x Jeżeli potrzebujesz liczby całkowitej skorzystaj z operatora "\" a nie "/" lub z Fix(liczba) Czyli mnoznik = lastcell \ 10 + 1 lub mnoznik=Fix(lastcell / 10 + 1) Co do pętli niby założyłeś...
Odwołaj się w pętli do arkusza źródłowego/docelowego przez Worksheets("nazwa_arkusza"), a po kropce do konkretnej komórki: albo w postaci .Range("E" & i) albo w postaci .Cells(i, 5), gdzie i - nr wiersza źródła (ew. jeżeli zrobisz w pętli for each c in ...., to możęsz użyć c.Row). Do tego druga zmienna np. j dla wiersza arkusza-celu, czyli: j = 1 for...
Brakuje chyba jeszcze jednej pętli zmieniającej kod sklepu. Hmm, raczej: na pewno ;) Spróbuj[syntax=vb]Sub asd() Dim wiersz, nr, ilosc As Integer Dim ostWrs As Long, w As Long, ile As Integer ostWrs = Range("B65536").End(xlUp).Row wiersz = 1 Range("C1:D1500").Clear For w = 1 To ostWrs nr = Cells(w, 1) ilosc = Cells(w, 2) For ile = 1 To ilosc Cells(wiersz,...
w trzeciej sama trasa wypisana w formacie: sklep_xxx-sklep_yyy-sklep_zzz Jeśli dobrze zrozumiałem, to myślnik jest znakiem rozdzielającym nazwy sklepów, których trzeba wyszukać? Jeśli tak, to najprościej rozbić ciąg funkcją Split i zapisać w tablicy. Następnie wyszukać kolejne wartości w pętli For, gdzie licznikiem będzie rozmiar tablicy. Wynik można...
Pomogę w ten sposób: Tak przypisujesz nazwę z danej komórki Nazwa_z_komorki = Worksheets("KON").Cell... 1).Value i podobnie ilość Ilosc_z_komorki = Worksheets("KON").Cell... 2).Value Do powyższego cells(nr wiersza,nr kolumny) dodanie arkusza: Sheets.Add Nadanie nazwy arkuszowi: ActiveSheet.Name...
Na podstawie pliku czas_pracy.xls przygotowałem przykładowe makro. W skoroszycie czas dodałem w komórce A2 ilość pracowników wyszukaną funkcją =ILE.NIEPUSTYCH(A3:A5000). Dodałem nowy skoroszyt "Warunek" w którym znajdują się komórki z funkcjami wyszukującymi interesujące nas godziny : =BD.MIN(dane!$A:$D;C$1;$A$1:$B$2) i =BD.MAX(dane!$A:$D;D$1;$A$1:$B$2)...
A nic nie pisałeś, że chcesz zautomatyzować jakąś czynność :) Zwykle robi się to kompleksowo. Pobieranie danych z zewnętrznego źródła lub t.p. a same działania matematyczne są jakby przy okazji. Po drugie, makro pisze się raczej w sytuacjach, gdzie nie ma możliwości stosowania funkcji wbudowanych, a póki co (przynajmniej ja) nie widzę takiej potrzeby....
w naszej pętli zamiast MsgBox wystarczy podstawić Razem byłoby coś takiego Sub petla() For i = 2 To Range("D2").End(xl... For j = i To Range("D2").End(xl... If Cells(j, 4) <> Cells(j + 1, 4) Then Exit For 'porownanie w kol D indeks 4 Next i = j 'żeby nie od...
Jeśli adresy w podglądzie są prawidłowe, to podstaw kopiowanie. [syntax=vbscript]Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Arkusz2") wdst = 3 With ws For w = 2 To 812 Step 6 For k = 11 To 24 Step 3 'podgl = Range(Cells(w, k), Cells(w, k + 2)).Address(0, 0) & " kopiuj do " & Cells(wdst, 8).Address(0, 0) .Range(.Cells(w, k), .Cells(w, k +...
to makro do "zabawy" Dodano po 2 jeszcze dwie wersje.... Pierwsza ile_wierszy, to może być niemal dowolna liczba sprawdzonych wierszy , można wpisać nawet tyle ile wierszy ma cała kolumna (zależy od wersji Excela) Chodzi o to by nie sprawdzać całej kolumny bo to może potrwać.... Skopiowane zostaną tylko niepuste komórki. [syntax=vba] Sub copy_cells()...
Druga część warunku pętli to przerwanie w razie powtórnego uruchomienia. Wiersz(e) należy wstawić o jeden niżej (Range("A" & i + 1).EntireRow.Insert) oraz (i = i + how_many + 1) Sub rows_influx() Dim i As Long i = 2 Do Until ActiveSheet.Range("A" & i) = "" Or ActiveSheet.Range("A" & i + 1) = ""...
Próbuje zrozumieć co chcesz osiągnąć i nie do końca wiem.
Szablon PZ musiałbyś najpierw utworzyć w dodatkowym arkuszu. Umieszczenie w nim danych i wydruk, to już tylko "chwila" Odn. zegara Wklej do modułu [syntax=vbscript]Option Private Module Sub Zegar() If Time > "23:49:00" And Time < "23:59:00" Then Druknij End If NextTick = Now + TimeValue("00:10:00") Application.OnTime NextTick, "UpdateClock" End...
[syntax=vbscript]Sub DoBazy() kol = Application.Match([C3], Sheets("Baza").Range("A1:GR1"), 0) If Not IsError(kol) Then For i = 1 To 260 Worksheets("Baza").Cells(i, kol) = Worksheets("DoBazy").Cells(i, 3) Next i MsgBox ("Dane dla daty " & [C3] & " zostały skopiowane") Else MsgBox "Brak danych." End If End Sub [/syntax]
rezystancja pętli generator pętli separator pętli
kasowanie błędów iveco zestaw mieszający podłogówki czujnik temperatura gorenje
wentylacja mechaniczna hilti udaru
Jak zdemontować zabierak w sokowirówce Julita? Głośniki Unitra ZGZ-10/1 Tonsil nie działają z Radmor 5102