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...
[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]
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")...
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 &...
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.
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,...
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.
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 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)...
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....
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,...
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,...
Ponawiam temat. Czy jest ktoś w stanie mi pomóc?
Ech, pomyliły mi się te plusy z minusami :) Trzeba zamienić warunki 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]
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.
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)...
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]
[syntax=vb]For i = 3 To 31 Select Case i Case 3 To 7, 12 To 27, 30, 31 '[dzialanie] End Select Next [/syntax]
Temat rozwiązany na innej grupie - do zamknięcia
U mnie drukuje poprawnie. Jaki masz komunikat błędu?
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.
Urządzenie nie wysyła żadnego sygnału dopóki nie zostanie naciśnięty przycisk na urządzeniu. Myślałem żeby przerwać pętlę po naciśnięciu strzałek na klawiaturze lub kliknięciu myszką, ale nie wiem jak sprawdzić czy został wciśnięty klawisz, próbowałem przez OnKey ale nie obsługuje Exit Do.
zamykam
Witam mam oto procedurę do obsługi przycisku [syntax=vb]Private Sub CommandButton1_Click() Const LiczbaPi = 3.14159265359 poz = 6 For i = Cells(1, 1) To Cells(1, 2) Cells(poz, 6).Value = i Cells(poz, 7).Value = Sin(2 * LiczbaPi * (Cells(poz, 6) - (Cells(1, 8) / 23))) Cells(poz, 8).Value = Sin(2 * LiczbaPi * (Cells(poz, 6) - (Cells(1, 8) / 28))) Cells(poz,...
kolumna "POCZĄTEK" ma byc lub zamiast niej WYNIK? Dodano po 3 Na zdjęcie moglo byc nazwy kolumn(A, B, etc.) i początkowy wiersz. Dla VBA to jest wazne
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.
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.
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...
: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...
google -> VBA pętla for Linków tam od groma :)
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....
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
Nie wiem dokładnie co masz na myśli, pisząc: po zmianie numeru komórki A1 do określonego zakresu niemniej wydaje się, że powinieneś do tego zadania wykorzystać zdarzenie arkusza "Change". Przykładowo, w module VBA arkusza, który drukujesz , możesz umieścić kod: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target,...
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 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...
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...
Jak zwykle wyrwane z kontekstu ;) Takie zadanie realizować należy w pętli, sprawdzając stan zaznaczenia. Prosty przykład w załączniku.
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...
Jeśli działa, to po co poprawiać? ;) Ja osobiście użyłbym pętli for each , a zamiast warunków if then else CASE'a tak jak w tym przykładzie: [syntax=vb] Select Case LNumber Case 1 To 10 LRegionName = "North" Case 11 To 20 LRegionName = "South" Case 21 To 30 LRegionName = "East" Case Else LRegionName = "West" End Select [/syntax] Ale to kwestia gustu...
Witam, mam pytanie jak rozwiązać następujący problem mam komórkę, która przyjmuje określoną wartość np. 4 chciałbym, żeby makro pobrało tą wartość i wykonało jakąś czynność tyle razy ile jest wpisane w tej komórce np: ActiveWorkbook.Sheets("Zes").Activate Range("A2").Select Do If IsEmpty(ActiveCell) = False Then ActiveCell.Offset(1, 0).Select End If...
pętel excel makro excel pętel pętel pętel efekt
tłumaczenie panel corsa włącznik świateł sprawdzić wirnik młynek
łopaty elektrownia wiatrowa wykrywacz metalu metali
Kocioł Vaillant VUPL240/3-5 błąd F.75 - przyczyny i rozwiązania Suzuki DR 350 1993: Dwa czujniki wału korbowego