Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel VBA - Nadanie warunków

dombek100 01 Cze 2013 15:01 1500 9
  • #1 01 Cze 2013 15:01
    dombek100
    Poziom 6  

    Witam, potrzebuję pomocy przy kodzie VBA.
    Chciałbym żeby makro eksportowało komórki spełniające pewne kryteria, z excela do pliku zewnętrznego. Udało mi sie stworzyć makro eksportujące po kolei dane z komórek, teraz chciałbym zeby wybierało tylko wiersze spełniające pewne warunki (koniecznie łącznie tzn kol4 ="04" albo ="05" i jednocześnie kol5 zaczyna sie od "s"
    Wiem, ze ten kod jest pewnie g!@#% wart, prośba o wyrozumiałość, dopiero sie ucze.

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Sub textfile2()

    Dim kol1 As String
    Dim kol2 As String
    Dim kol3 As String
    Dim kol4 As String
    Dim kol5 As String
    Dim i As Integer
    Dim fs As Object

    Set fs = CreateObject("Scripting.FileSystemObject")

    Open "C:\test.txt" For Output As #1
    i = 1

    If kol4 = "05" or kol4 = "05" And Left(kol5, 1) = "S" Then
    Do While Not IsEmpty(Cells(i, 1))
    kol1 = ActiveSheet.Cells(i, 1)
    kol2 = ActiveSheet.Cells(i, 2)
    kol3 = ActiveSheet.Cells(i, 3)
    kol4 = ActiveSheet.Cells(i, 4)
    kol5 = ActiveSheet.Cells(i, 5)
    Print #1, kol1 & ";" & kol2; ";" & kol3; ";" & kol4; ";" & kol5; ";"
    i = i + 1
    Loop
    End If
    Close #1
    MsgBox "data exported"
    End Sub
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0 9
  • #2 01 Cze 2013 15:35
    fascynat
    Poziom 24  

    Czy o to Ci chodzi?

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    W poście masz małe "s", a w kodzie duże "S" - nie wiem czy to jest Ci obojętne?

    0
  • #3 01 Cze 2013 16:07
    dombek100
    Poziom 6  

    Dzięki, uwzględnię to w moim kodzie.
    Nie rozwiązuje to jednak problemu, który jak mi sie wydaje jest pomiędzy if … a do while…
    Jak debuggerem analizuje kod linia po linii to po sprawdzeniu warunku if… wykonanie makra przeskakuje od razu do exit if, pomijając po drodze najważniejsze czyli całą pętle i print. Musiałem pochrzanić z kolejnością, albo z warunkami.

    0
  • Pomocny post
    #4 01 Cze 2013 16:13
    fascynat
    Poziom 24  

    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.

    0
  • Pomocny post
    #5 01 Cze 2013 16:44
    adamas_nt
    Moderator Programowanie

    dombek100 napisał:
    chciałbym zeby wybierało tylko wiersze spełniające pewne warunk
    Jak zwał, tak zwał. Ale wyobraźmy sobie, że "wybierało" dzieje się w tej linii
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    (wcześniej jest przypisanie). Wystarczy więc, tę jedną linijkę "owarunkować"
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    i z głowy...

    0
  • #6 01 Cze 2013 17:42
    dombek100
    Poziom 6  

    Jasny gwint śmiga :)
    Bardzo dziękuje za pomoc, wiedziałem ze skopałem w składni.
    Jeszcze jedno krótkie pytanie.
    Chce żeby w drugim warunku pobierało bez względu na to czy w excelu wpisane jest "S" (Duze) czy "s" (małe), bo w tej chwili wybiera tylko duze.

    0
  • Pomocny post
    #7 01 Cze 2013 18:18
    fascynat
    Poziom 24  

    zamiast

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    wpisz
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    czyli
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #8 01 Cze 2013 19:58
    101pawel
    Poziom 25  

    fascynat napisał:
    zamiast .... wpisz ....
    czyli
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Trochę to przekombinowałeś. Jeśli chodzi o warunek dla wartości kol5, kod powinien wyglądać następująco:
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    tak w każdym razie kiedyś się pisało ;)
    Pozdrawiam

    0
  • #9 02 Cze 2013 09:40
    dombek100
    Poziom 6  

    Bardzo dziękuje wszystkim za pomoc.

    0
  • #10 02 Cze 2013 10:29
    fascynat
    Poziom 24  

    101pawel napisał:
    Trochę to przekombinowałeś. Jeśli chodzi o warunek dla wartości kol5, kod powinien wyglądać następująco:
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    tak w każdym razie kiedyś się pisało ;)
    Pozdrawiam

    A teraz już nie?

    Bo ja proszę kolegi, jako samouk, nieświadom meandrów składni języka, próbujący coś napisać jeżeli zajdzie taka potrzeba, czyt. b. rzadko, programuję nieschematycznie, na tzw. czuja, wręcz z ułańską fantazją podążam do celu ścieżkami, o których zawodowcom się nawet nie śniło i zadziwiam ich, mało tego zadziwiam nieustannie samego siebie! :D

    Miłej niedzieli i nie tylko...

    0