Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

EXCEL - MAKRO - złożona modyfikacja kodu makra

1qwert1 16 Lut 2017 15:10 219 2
  • #1 16 Lut 2017 15:10
    1qwert1
    Poziom 2  

    Witam, mam ogromna prosbe czy mógłby ktoś mi pomóc/podpowiedzieć w zmodyfikowaniu makr.
    1. W załączonym skoroszycie jest jeden arkusz główny <BAZA> i kilka arkuszy pomocniczych np <SM_S_M>, (ich liczba lub nazwy moga się zmieniać). Do każdego z "Arkusza pomocniczego" podpiete są makra które mają za zadanie skopiować zawartość zamknietych plików, jednak jest problem ponieważ nie wiem jak zmodyfikowac kod żeby formatował pobierane dane np w kolumnach z nr działek do formatu tekstowego, bo zdarza się że zamiast np "1/2" wyskakuje wartość 1 luty albo wartość liczbowa.
    2. CZy można jakoś zmodyfikować te makra pobierające z zamkniętych plików do arkuszy pomocniczych żeby pobierało tyle wierszy ile jest niepustych a nie że musze to ustalać np < For c = 1 To 50> bo musze ustalić to z nadwyżką i często bardzo długo pobiera te dane.
    3. Założenie całego pliku "BAZASPrawtest" polega na tym żeby móc wyszukiwać (filtrem zaawansowanym) sprawy wszytskich osób z mojej grupy - każdy z nich ma swój plik zapisany na komputerze, który kopiowany jest do dysku wspólnego (z automatu), i to sa własnie te "pliki zamknięte" o któryxh wspomniałem w pkt 1, z których za pomocą makr kopiują do arkuszy pomocniczych. Następnie z arkuszy pomocniczych makro "aktualizuj" kopiuje zawartość do arkusza BAZA żeby móc w nim zastosować filtr zaawansowany (eh jeśli ktoś ma może inny łatwiejszy pomysł to chetnie skorzystam).
    4. Niektóre osoby mają jednak swoją ustaloną kolejność kolumn i dlatego czy można tak zmodyfikowac kod "aktualizuj" żeby kopiował odpwiednie kolumny (nazwy są ujednolicone) do odpwiedników kolumn w arkuszu BAZA.
    5. MAkro "Aktualizuj" kopiuje te wiersze (ze wszytskich arkuszy pomocniczych znajdujących się w skoroszycie) które mają wypełnioną kolumne 1 <lp>, jednak gdy jest np w następnym wierszu luka to już kolejnych niepustych nie kopiuje, jak zrobić żeby nie pomijał tych kolejnych - czyli zeby pobierał każdy wiersz który ma tzw liczbe porządkową.
    6. Makro "Aktualizuj" wciśniete po raz drugi "pożera" pierwsze wiersze, musze najpierw całość wyczyścić i wtedy moge na nowo aktualizować arkusz BAZA.

    Z góry bardzo dziękuje za jakąkolwiek pomoc, ponieważ kombinuje już od paru miesięcy, i nie moge sobie poradzić.
    pozdrawiam serdecznie

  • #2 16 Lut 2017 17:43
    Voof
    Poziom 10  

    Hej.
    W zasadzie czytałem Twój kod, ale jak spojrzałem na te dane w arkuszach to stwierdziłem, że nie będę tego rzeźbić, bo łatwiej by było od nowa napisać.
    Ale pokieruję Cię trochę.
    1. To, że jak przeklejasz wartości i np wskakuje Ci 1luty to łatwo możesz obejść zamieniając format na tekstowy, najlepiej całej kolumny można to zrobić za pomocą Selection.NumberFormat = "@" oczywiście zaznacz sobie Range do tego.
    2. pobieranie wierszy nie pustych jest też w zasadzie bardzo proste. otwórz nowy arkusz wypełnij x wierszy w kolumnie A i wklep kod w nowym module:

    Code:

    Sub LastRow()
        Dim LastRow As Long
        With ActiveSheet
            LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        End With
    End Sub

    klikaj f8 aż dojedziesz do end with i najedź kursorem na LastRow i pokaże Ci numer ostatniego wiersza i możesz go wykorzystać w forze "to LastRow" :)

  • #3 17 Lut 2017 12:52
    Prot
    Poziom 22  

    1qwert1 napisał:
    Z góry bardzo dziękuje za jakąkolwiek pomoc, ponieważ kombinuje już od paru miesięcy, i nie moge sobie poradzić.


    Z takim "arkuszem" nie poradzi sobie żadne makro. Każdy arkusz praktycznie jest inny tzn różne liczby kolumn, różne opisy, wiersze pojedyncze i dwu lub kilkuliniowe :D , formatowania komórek domyślne lub "od czapy" (np komórka D2 w arkuszu SM_S_M :?: ).

    Jeśli chcesz tą pracę z budową "bazy danych" kontynuować to zacząć musisz "od podstaw" tj od znormalizowania arkuszy źródłowych. Musisz opracować jeden szablon arkusza źródłowego, który pozwoli zapisać wszystkie istotne dane w wymuszonym porządku i wymuszonym formacie.

    W zależności od "warunków terenowych" albo wymusisz przygotowywanie tych arkuszy wg jednego szablonu, albo musisz przygotować procedurę importu danych źródłowych (dla każdego "rodzaju" osobną :D ) lub opracować i wdrożyć specjalny formularz do zbierania danych.

    Dopiero wówczas będziesz mógł zastosować VBA do automatyzacji czynności kopiowania, wyszukiwania czy filtrowania.

 
Promocja -20%
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
tme