co robię źle ... Np.: brak deklaracji zmiennych "ostw" i "ostw2", jak również deklaracje innych nie wiedzieć czemu "variant", Np.: ... ostw = Worksheets("DANE").Cells(Rows.Count, "B").End(xlUp).Row ostw2 = Worksheets("LOG").Cells(Rows.Count, "B").End(xlUp).Row Zapis " Rows.Count " odnosi się do bieżąco aktywnego arkusza, a nie do arkusza "DANE", czy...
Ech, pomyliły mi się te plusy z minusami :) Trzeba zamienić warunki pętli.
Załącz plik będzie prościej. Przeskakuje, bo skąd program ma wiedzieć co to jest "kol4" i "kol5"? Nie zdefiniowałeś do czego ma się ta zmienna odnosić. W tym przypadku stwierdza, że kol4 = "" i dlatego kończy pętle.
le bez niego nie wiem jak to zrobić inaczej aby znaleźć w drugim arkuszu nazwisko wybranego pracownika. Tak jak Maciej wcześniej pisał, bez załącznika ciężko cokolwiek doradzić ale tak bez sprawdzania na szybko zrób tak. Tą linijkę usuń [syntax=vbscript]Set SzukaneNazwiskoRow = tb_GrafikTSW.ListColumns("NAZWISKO_TSW")...
Coś więcej o tych liczbach? Czy się powtarzają w obrębie wiersza? Czy liczbę z kolumny A chcesz porównywać tylko z innymi w kolumnie A? Czy są uporządkowane rosnąco w wierszu? W każdym razie - w załączniku przykład takiej metody "brute-force" z zagnieżdżonymi pętlami.
[syntax=vb] Sub MojeKopie() Dim r&, myCopy As Boolean slowa = Array("Period", "Account", "Terminal") For r = 2 To Cells(Rows.Count, "A").End(xlUp).Row myCopy = True For Each slowo In slowa If Cells(r, "A").Text Like "*" & slowo & "*" Then myCopy = False Exit For End If Next If myCopy Then Cells(r, "A").Copy Cells(r, "C") Next End Sub [/syntax]
No to tak: [syntax=vbscript]Sub petla() Dim k&, i& For k = 1 To Cells(Rows.Count, "B").End(xlUp).Row If Cells(k, 2).Value Like "Symb." Then i = i + 1 Cells(k, 2).Offset(0, -1).Value = i End If Next k End Sub[/syntax]
Co do twojego kodu, .Range/.Cells - odwołuje się do aktywnego arkusza? Chodzi mi o te kropki na początku. Nie, odwołuje się do obiektu - w tym wypadku arkusza - użytego w otaczającej klauzuli With... To taki skrótowiec, którzy przed kropką wstawia to, co jest w With, czyli zamiast powtarzać: Przy próbie tworzenia kolejnego arkusza wywala błąd 1004...
[syntax=vbscript]Sub Konwersja() With Application.FileDialog(msoFileDialogFold... .Title = "Wybierz folder z plikami CSV" .InitialFileName = Environ("userprofile") & "\Desktop" If .Show = -1 Then f = .SelectedItems(1) End With If f = "" Then Exit Sub x = "\PlikiExcel" If Dir(f & x, vbDirectory) = "" Then MkDir (f & x) csv = f &...
A jak dokładnie są nazwane arkusze? Cała data, czy tylko numer dnia? Jeżeli cała data to: Sub NazwaArkusza() Range("a2") = ActiveSheet.Name End Sub przy numerze dnia: Sub NazwaArkusza() Range("a2") = ActiveSheet.Name & ".02.2011" End Sub To jest tylko dla jednego arkusza. Dla większej ilości...
Wrzuć spakowany, nie wszyscy ufają takim "przechowalniom". Albo wklej samą pętlę. W skrócie: Jeśli For-Next to nie ma problemu. Jeśli 'Do', to wstaw licznik. W obu przypadkach, gdy licznik osiągnie zadaną wartość =Range(tu adres komórki), wtedy Exit Sub.
zapomniales Dir() przed Loop tj. plik=Dir()
Na pewno błąd jest w wierszu: [syntax=vbscript]Progresywne = Progres + Progres[/syntax] Nie zachowujesz dotychczas obliczonych składników, tylko ostatni pomnożony przez 2. Powinno być: [syntax=vbscript]Progresywne = Progresywne + Progres[/syntax]Nie wykluczam, że mogą być też inne błędy, ale do dokładnej analizy potrzebny jest załącznik w pliku.
Chyba trzeba wstawić licznik do pętli. Sprawdź [syntax=vb]Sub Dostawy() Dim OstWiersz As Long Dim j As Integer, l As Integer Dim LArkuszy As Integer, LArkuszy2 As Integer, LWierszy As Integer Dim zakres As Range, zakres2 As Range, licznik As Integer 'kopiuję dane do nowego arkusza Sheets(1).Copy after:=Sheets(1) OstWiersz = Sheets(2).Cells(Cells.Rows.Count,...
A mi się otwierają w 2016. Może masz coś nie tak z office2016? edit ------------------------------------ Na Twój problem: [syntax=vbnet]Sub Przenies() Dim x As Double, ostatni_wiersz As Double ostatni_wiersz = Sheets("Arkusz1").Cells(Sheets("Arkusz1"... 1).End(xlUp).Row For x = 1 To ostatni_wiersz Sheets("Arkusz2").Cells(3 + x * 12 - 12, 2)...
Nie wiem czy dobrze zrozumiałem, bo nie bardzo widzę korelację pomiędzy pierwszym plikiem i jego danymi, a obrazkiem zamieszczonym później. Jeśli to ma być tylko proste połączenie danych, to takie makro: [syntax=text]Sub Zestawienie() Dim a, b, c, nr nr = 2 For Each a In Range("C2:C25") For Each b In Range("E2:E25") For Each c In Range("G2:G13") Cells(nr,...
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....
Do tego nie jest Ci potrzebna żadna pętla. Najpierw musisz sobie określić pierwszy wolny wiersz w arkuszu Inkrementacja jest zbędna przecież (kod pod przyciskiem)... 1. Wywal pętlę. 2. W miejsce a=a+1 wpisz powyższą linię i ciesz się działaniem.
Będę bardzo wdzięczna za pomoc Na forum jest wiele podobnych przypadków. Proponuję nagrać makro, a następnie użyć metod (pętli) ze wspomnianych przykładów.
Uruchom poniższy kod w aktywnym Arkuszu3 [syntax=vb]Sub z() Dim iLstRw% Dim iLstNmRw% Dim rRng As Range j = 3 With Sheets("Arkusz1") iLstNmRw = .Cells(Rows.Count, 6).End(xlUp).Row Set rRng = Range(.Cells(6, 6), .Cells(iLstNmRw, 6)) End With iLstRw = Cells(Rows.Count, 1).End(xlUp).Row For i = 7 To iLstRw rRng.Copy Destination:=Cells(j, 9) Range(Cells(j,...
Podobny sposób do zablokowania kontrolki - dający efekt "wyszarzania", ale samego tekstu - można uzyskać ustawiając właściwość Enabled kontrolki na False. Excel faktycznie nie obsługuje wyszarzenia całej kontrolki, chyba że jej BackColor zmienisz ręcznie ;).
Czy chodzi o coś takiego? [syntax=vb]Sub Makro1() With Sheets("Arkusz1") For Each c In .Range("A1:A5") if c.Value = "aa" Then .Range("C" & c.Row).Value = c.Value 'lub: .Cells(c.Row, 3).Value = c.Value c.Value = "" End If Next c End With End Sub[/syntax]
google -> VBA pętla for Linków tam od groma :)
U mnie drukuje poprawnie. Jaki masz komunikat błędu?
[syntax=vb]For i = 3 To 31 Select Case i Case 3 To 7, 12 To 27, 30, 31 '[dzialanie] End Select Next [/syntax]
Kod który Ci podawałem ostatnio działa tylko dla jednej kolumny, takiej samej jak Target.Column. U Ciebie nie działa bo funkcja Intersect() [zwracająca wspólną część dwóch zakresów] poza 15-tą kolumną jest teraz wywoływane na nie takich zakresach jak trzeba. Zmień początek tego makra na taki: [syntax=vb]Private Sub Worksheet_Change(ByVal Target As Range)...
https://obrazki.elektroda.pl/4000448600_... Taki błąd pojawia się kiedy zamknę forma z dodawaniem firmy i otworzę go jeszcze raz.
Jak zwykle wyrwane z kontekstu ;) Takie zadanie realizować należy w pętli, sprawdzając stan zaznaczenia. Prosty przykład w załączniku.
... po dodaniu tego kod zaczyna bardzo długo pracować ... Nie obserwuję tego na "prostych" danych, ale spróbuj może w ten sposób: [syntax=vbscript]Option Explicit Sub Czysc_Wszystko_2() Dim czas As Single: czas = Timer If MsgBox("Wyczyścić wszystkie formularze 'Dniówek'?", vbQuestion + vbYesNo, "Potwierdź") = vbNo Then Exit Sub Dim i As Integer, w...
Tu nie ma pętli...
: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...
Nie ma Continue w VBA. Może chodzi ci o coś takiego? Sub przyklad() Dim i As Integer For i = 2 To 21203 For j = 2 To 21264 If Cells(i, 1) = Cells(j, 2) Then Cells(i, 3) = Cells(j, 4) Else goto nxt End If nxt: Next j Next i End Sub
[syntax=vbscript] wi = wi + 10 And wj = wj + 10[/syntax] - naprawdę nie wiesz co czynisz. na samym początku dodaj: [syntax=vbscript] addi = Array(10, -20, 25, 0) addj = Array(10, 25, -20, 0)[/syntax] zaś wewnątrz pętli: [syntax=vbscript]vv=2*(Cells(k, i).Value="K")+(Cells(k, i).Value="K") wi=wi+addi[vv]; wi=wj+addj[vv];[/syntax] to wszystko zasapi twój...
Najprościej jak tylko możliwe Dim p As Variant p = "a" Do While IsNumeric(p) = False p = InputBox("Podaj kapitał początkowy:") If p = "" Then Exit Sub If IsNumeric(p) = True Then Exit Do MsgBox "Zle dane" Loop
mnożenie :D To zwykła matematyka. Zasadniczo przetłumacz na polski i wszystko stanie się jasne :D
Tak na szybko... Bez obsługi błędów, gładzenia kodu itp. Sub czytajpliki() Dim linia, sciezka, fs As Object, f, f2, k 'Application.ScreenUpdating = False sciezka = "C:\Documents and Settings\admin\Desktop\test\" Set fs = CreateObject("Scripting.FileSys... Set f = fs.GetFolder(sciezka).Files For...
Aaa. Tak to mniej więcej (po mojemu) powinno wyglądać. Z uwagi na późną porę nie testowałem. Sprawdź, dopracuj... [syntax=vb]Sub Makro1() m = 1 ile = Int(InputBox("podaj liczbę", "Liczba od 1 do 3", 3)) For i = 0 To IIf(ile >= 1, 1, -1) Step 0.1 For j = 0 To IIf(ile >= 2, 1, -1) Step 0.1 For k = 0 To IIf(ile >= 3, 1, -1) Step 0.1 If i + j + k = 1 Then...
[syntax=vbscript]Sub qq() ow = Cells(Rows.Count, "A").End(xlUp).Row For x = 1 To ow ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]" Next End Sub [/syntax] P.S. Dlaczego użyłeś pętli od końca do początku???
Ponawiam temat. Czy jest ktoś w stanie mi pomóc?
To cała pętla? Brakuje Loop a instrukcja Exit Do powoduje opuszczenie pętli już w pierwszym przebiegu... Przy takim zapisie a = a + 2 porównujesz co drugą parę. Chyba, że tak właśnie ma być...
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....
Temat rozwiązany na innej grupie - do zamknięcia
Makro, a w makrze:[syntax=vb] Sheets("Arkusz1").Select Sheets("Arkusz1").Copy After:=Sheets(3)[/syntax] ... ostatnia linijka powtórzona tyle razy, ile razy chcesz skopiować arkusz (może być np. w pętli). Dokładne parametry - odsyłam do help'a Excel'a.
Najprościej napisać makro w VB i skorzystać z pętli
np. tak: Dim koniec as integer koniec=cells(9, 24).value '<--- pobiera wartość z X9 jako koniec for x=1 to koniec Tu jest to, co ma być w pętli next x
[syntax=vbscript]Sub Wybrane() a = Array(1, 3, 13, 17, 23) For Each w In a MsgBox Cells(w, 1) Next End Sub [/syntax]
W VBA dużo jest możliwe. Deklarując funkcję możesz podać argumenty, którym później nadasz wartości przy wywołaniu, na przykład: [syntax=text]Function sumakolumna(litera As String) As Long Dim i As Long sumakolumna = 0 For i = 1 To 10 Step 4 sumakolumna = sumakolumna + cells(i, litera) Next i End Function [/syntax]W ten sposób podając literę kolumny...
Może najpierw wypróbuj wbudowane narzędzia Excela, a VBA w ostateczności? Mam na myśli: Dane>Analiza symulacji>szukaj wyniku oraz menedżera scenariuszy.
Ale że jak? Jak masz n (ciągła numeracja?) arkuszy to dla każdego 1..n-1 to wykonać? Jedną komórkę czy wiele? Z R2 do R1, czyli wiersz do góry? Samo kopiowanie komórki jest proste z wykorzystaniem zapisu proponowanego przez JVR: Sheets("DATA ENTRY " & s+1).Cells(y,x).value=Sheets("DATA ENTRY " & s).Cells(y,x).value Dołóż do tego odpowiednie pętle i...
Jeżeli chodzi o arkusz to nie ma problemu. Zamień Sheets("Arkusz1") na ActiveSheet wtedy wypełnianie tabeli będzie dotyczyć aktywnego arkusza. W załączeniu sortowanie nie na "Tabeli" edit -------------------------- Jak już jest sortowanie trochę inaczej, to numerację (Lp) dodałem do pętli wpisujących dane tabeli C
excel pętel makro excel pętel pętel pętel efekt
wynik hdtune buforowanie windows prędkość przesyłu danych
łopaty elektrownia wiatrowa wykrywacz metalu metali
Mikrofalówka EDEKA Zuhause AG820AWB - Parametry i Obsługa Jak zdemontować gumę z piły Hilti WSR 1200-PE?