logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

VBA-Excel kopiowanie danych z Excela do z formularza i z powrotem

kszwr 13 Sty 2023 14:56 555 4
REKLAMA
  • #1 20383243
    kszwr
    Poziom 2  
    Posty: 3
    Cześć wszystkim,
    jestem początkującym programistą VBA częściej używam nagrywania makr a później próbuję je przerobić na całość.
    Posiadam dwa arkusze "Arkusz A" to baza "Arkusz B" to formularz do którego chcę przekopiowywać z bazy ("Arkusz A") komórki A2 wartość wklejać ją do formularza ("Arkusz B"), do komórki B10 jako wartość, a następnie z komórki B27 wartość skopiować do bazy w komórce C2 i znowu kolejne kopiowanie z bazy A3 do formularza B10 jako wartość a następnie z komórki B27 wartość skopiować do bazy w komórce C3 itd. dopóki nie skończą się wartości w kolumnie A w bazie. W załączeni przesyłam przykładowe arkusze. Baza nie ma możliwości zmiany formatowania i edytowania.

    Z góry dziękuję za wszelką pomoc.
    Załączniki:
    • Nowy folder.rar (43.7 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 20383626
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Do takich zadań dobrze nadaje się funkcjonalność Tabeli danych. Tylko ona nie jest zgodna z tabelami Excela, więc jeśli musisz mieć te swoje dane w tabeli Excela, to trzeba to robić trochę naokoło. Tabela danych jest w ukrytych kolumnach G i H w Arkuszu A_. W Arkuszu B jest tylko zrobione połączenie. Oba skoroszyty muszą być otwarte. Tabela danych może być alternatywnie umieszczona w Arkuszu B, gdyby tak miało być wygodniej.

    Zastanów się, czy nie możesz zaadaptować takiego rozwiązania. Ono powinno być nawet szybsze od VBA. Poza tym dane wejściowe można zmieniać, tylko nie może ich być więcej. Jeśli ilość danych jest zmienna, to można sobie taką tabelę przygotować z zapasem. Można to też przerobić na VBA, ale jeśli wyniki chcesz mieć w formie stałych, to całą operację trzeba powtarzać po każdej zmianie danych.
    Załączniki:
    • Arkusz A_.zip (61.18 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #3 20395292
    kszwr
    Poziom 2  
    Posty: 3
    Dzięki za zainteresowanie.
    Jednak w rzeczywistości Arkusz B jest nieedytowalny i nie można w nim odkryć skoroszytu z danymi tak jak w załączonym. Zrobiłem taki arkusz dla przykładu. Jeżeli była by taka możliwość zastosowałbym funkcję WYSZUKAJ.PIONOWO. Tak więc muszę napisać takie makro aby mi pobierało numer z Arkusza A wklejało do Bazy Arkusz B i pobierało z powrotem wynik i tak do końca wpisanych danych w Arkuszu A.
  • REKLAMA
  • Pomocny post
    #4 20395688
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Napisanie takiego makra nie jest czymś szczególnie trudnym, tylko ono będzie się dość długo wykonywać. Moja propozycja zmierzała do przyspieszenia tego.
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
    Otwieranie pliku "Arkusz B" jest zakomentowane, bo u mnie był już otwarty. To sobie ustaw wg swojej ścieżki. Założyłem, że tabela Excela będzie zdefiniowana jak w przykładowym pliku.
    Arkusza B nie odsyłam, bo tam nie ma żadnych zmian.
    Załączniki:
    • Arkusz A.zip (27.64 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #5 20395747
    kszwr
    Poziom 2  
    Posty: 3
    Dziękuję za pomoc o to właśnie chodziło.
REKLAMA