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.

VBA-kopiowanie z arkusza do arkusza po spełnieniu warunku

Bet_bet 29 Mar 2017 09:02 729 7
  • #1 29 Mar 2017 09:02
    Bet_bet
    Poziom 5  

    Spoiler:
    Witam. Mam arkusz "obliczenia" w którym są dane liczbowe i puste komórki. Zależało by mi aby makro działało w następujący sposób:
    1. po pojawieniu danych w tym arkuszu "obliczenia" makro samo się uruchamiało.
    2. Chciałbym aby kopiowały się te dane, które są większe od zera( dokładniej nie kopiowało pustych komórek). Dane są od komórki F4.
    3. makro znajduje w arkuszu "obliczenia" przykładowo w komórce F4 dane 0,01 i wtedy skopiowało dane z komórki F4 oraz z komórki D4.
    4. kopiowanie jest do arkusza "działki" dane z arkusza "obliczenia" komórki D4 wstawiło do arkusza " działki" do komórki A2, natomiast dane z komórki F4 z arkusza "obliczenia" skopiowało do arkusza " działki " do komórki B2.
    Ważne w arkuszu "obliczenia" może być tak że w komórce F4 są dane liczbowe i dopiero w komórce f84. Czyli wtedy tylko te dwie dane są kopiowane do innego arkusza " działki " wraz z danymi w komórkach odpowiednio D4 i D84

    Poniżej makro ale nie umiem go dalej przerobić:

    [tex]
    Sub kopiuj()

    Dim OstW As Long
    Dim kom As Excel.Range

    Application.ScreenUpdating = False
    With Sheets("obliczenia")
    OstW = .Cells(Rows.Count, "F").End(xlUp).Row
    For Each kom In .Range("F4:F" & OstW)
    If kom.Value = ">)" Then
    Range("f2" & kom.Row).Copy
    Sheets("działki").Cells(Rows.Count, "B2").End(xlUp).Offset(1).PasteSpecial xlValues
    .Rows(kom.Row).Delete
    End If
    Next kom
    End With
    Application.ScreenUpdating = True

    End Sub

    0 7
  • #2 29 Mar 2017 09:39
    kinggustav
    Poziom 20  

    Ale jaki są twoje potrzeby? Piszesz co ma robić makro, ale ten zamieszczony kawałek tego nie robi. Nie kopiuje kolumny E, sprawdza wartość ">)", a nie zero.
    Jeżeli chcesz pomocy w napisaniu makra to trzeba wyjść od wymagań, jeżeli chodzi o poprawienie, to nie bardzo wiadomo jak to poprawić.
    Osobiście lubię kopiowanie poprzez:
    Sheets("działki").Cells(j, 2)=Cells(i,6)
    Prawda że prościej niż ze schowkiem?
    Zapis "f2" & kom.Row jest chyba nieprawidłowy, podczas wykonania dla kolejnych komórek od 4 wiersza da odpowiednio f24, f25 ...

    0
  • #4 29 Mar 2017 11:11
    Bet_bet
    Poziom 5  

    Ja zaczynam nauke.

    Chodzi o to aby makro kopiowało dane z arkusza obliczenia od komórki F4 pod warunkiem że tam sa liczby a nie puste komórki.
    Zakładając że w komórce F5 jest liczba 0,1, to makro ją wstawia do arkusza działki do komórki B2, po zidentyfikowaniu danych w komórce F5 kopiuje wartość przypisana(znajdującą) w komórce D4 w arkuszu obliczenia i ja wkleja do arkusza działki do komórki a2

    Ja zaczynam nauke w vba przepraszam za błędny kod.

    Dodano po 23 [minuty]:

    wzór w załączniku

    0
  • #6 29 Mar 2017 13:49
    cbrman
    Poziom 27  

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #8 29 Mar 2017 15:31
    kinggustav
    Poziom 20  

    W edytorze VBA wybierasz dwukrotnym kliknięciem Ten_skoroszyt. W okienkach na górze wybierasz zdarzenie, odpowiednio wartości Workbook i Open. Powinien się utworzyć szablon procedury w której możesz napisać co chcesz, np. wywołać inną procedurę. Można też zdefiniować procedurę Sub Auto_Open(). O ile pamiętam powinna być w module Auto, ale nie jestem teraz pewny.

    0