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")...
[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]
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.
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)...
Jednak chyba wygodniej będzie (jeśli chodzi o VBA) wykorzystać procedurę zdarzeniową. Przykład w załączniku.
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 ;).
A jeśli bym chciał na odwrót?? żeby to z kolumny C przekopiowało się do kolumny A, z której wyszukuje tekst "aa" i zastąpiło ten tekst czymkolwiek co jest w kolumnie C, a C kolumnę pozostawiło pustą??? [syntax=vb]Sub Makro1() With Sheets("Arkusz1") For Each c In .Range("A1:A5") if c.Value = "aa" Then c.Value = .Range("C" & c.Row) .Range("C" & c.Row)...
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.
... 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...
Jak zwykle wyrwane z kontekstu ;) Takie zadanie realizować należy w pętli, sprawdzając stan zaznaczenia. Prosty przykład w załączniku.
Właśnie to pozwoliłem sobie zmienić w przesłanym przykładzie w makrze kolegi adamas_nt Wpisz zamiast ostatniWiersz = 100 to ostatniWiersz = Sheets("Arkusz1").Cell... 1).End(xlDown).Row Wtedy makro samo policzy ile jest wierszy i będzie się wykonywało tylko do ostatniego wiersza. Warunek dane w kolumnie...
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...
Ponawiam temat. Czy jest ktoś w stanie mi pomóc?
[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???
Temat rozwiązany na innej grupie - do zamknięcia
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ć...
3. poco napisałem na tym forum??? Rozczuliłeś mnie i wprowadziłeś w zakłopotanie :oops: do tego stopnia, że napisałem Ci nie tylko 3, ale całe 4 linijki: [syntax=vb] Sub timeSubtract() Const TIME_FORMAT = "hh:mm:ss" Range("E1") = Format(TimeValue(Range("C1").Text) - TimeValue(Range("B1").Text), TIME_FORMAT) End Sub [/syntax]Masz odejmowanie czasu za...
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
[syntax=vbscript]Sub Wybrane() a = Array(1, 3, 13, 17, 23) For Each w In a MsgBox Cells(w, 1) Next End Sub [/syntax]
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
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...
Dlatego myślałem o dodaniu ewentualnego oczekiwania na naciśnięcie klawisza w pętli tylko nie wiem jakim poleceniem. Jeżeli makro zostało już uruchomione to nie przerwiesz działania innym makrem czy przyciskiem, tylko możesz cisnąć szybko 2x klawisz escape. Tak jak pisałem wcześniej przenieś tą pętle pod 'worksheet calculate' i wtedy możesz zmieniać...
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.
Dzień dobry! Potrzebuje kod w makrze Założenia: Będzie powtarzał daną wartość np. 3000 lub tekst w danej kolumnie w askusz1 oraz powtarzał daną wartość np.0000 lub tekst 2 w arkuszu 2
excel pętel makro excel pętel pętel pętel efekt
schemat separator akumulator linux kompilacja jaką młotowiertarkę
schemat inwertera hybrydowego schemat falownika hybrydowego
Oznaczenia + i − na potencjometrach, bateriach, kondensatorach – jak rozpoznać bieguny? Zamiennik akumulatora 40V do kosiarki Lahmann – kompatybilność Lehmann/Kanwod, regeneracja