vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest poniedziałek, 29 kwietnia 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

ComboBox z listy komórek w arkuszu. Drukuj tylko komórki z danymi.


otwartyotwarty rozpoczął: wywyż postów: 9



napisał: wywyż
postów: 7


umieszczony:
5 listopada 2012
00:16

  
Słuszna uwaga, trochę mi zajęło zanim doprowadziłem do porządku cały dokument i wszystkie arkusze, ale się udało. Jeszcze raz bardzo dziękuję za bardzo konstruktywną i rzetelną pomoc.
napisał: Trebor
postów: 1209


umieszczony:
4 listopada 2012
17:19

  
nazwa pliku rozmiar
VBA.xlsm 121.84 kB

Wykonywanie takich raportów formułami to jak dla mnie niepotrzebna strata czasu.
W załączniku raport tabeli przestawnej.
Mogę napisać makro, ale analizowanie takiej ilości formuł - szkoda zdrowia i oczu.
Można także na UserForm wykorzystać MultiPage i dla każdego raportu żądać podania właściwego okresu czasowego.
napisał: wywyż
postów: 7


umieszczony:
4 listopada 2012
12:04

edytowany:
4 listopada 2012
14:27

  
Super! dokładnie na tym mi zależało, a dodatkowo wprowadziłeś że w drugim wyborze daty nie da się wprowadzić takiej daty, która generowałaby pusty zbiór. I drukowanie tylko tych komórek, które posiadają wartości też działa tak jak chciałem. Bardzo dziękuję!
Nadal nie rozumiem jak się tworzy te powiązania pomiędzy plikami, ale jeszcze z tym "powalczę". W pierwszej kolejności jednak dopracuję sobie te makra.


[Edit]:
Jednak nie jest tak kolorowo...
Zakres dat obejmuje wszystkich operatorów, ale nie dla wszystkich operatorów występują te same daty... Np. mogę wybrać datę 2012-09-07, gdyż występują dla niego wartości, ale nie dla wszystkich operatorów. W arkuszu "01" pojawiają się tylko daty jednego operatora, a tam ta data nie występuje. Tworzenie raportu generowałem z użyciem funkcji WYSZUKAJ.PIONOWO lecz nie wiem jak mógłbym stworzyć formułę (lub makro), która:
w razie gdy szukana wartość nie znajduje się w zakresie, to wyszuka najbliższą większą wartość od tej wpisanej.
Czy jesteś w stanie pomóc w tej kwestii?
napisał: Trebor
postów: 1209


umieszczony:
4 listopada 2012
10:17

  
nazwa pliku rozmiar
Pulpit.rar 98.05 kB

Pozostańmy wobec tego przy Twoim sposobie. W załączniku bez trudu znajdziesz zmiany jakie wprowadziłem. Nie jest to gotowiec, jednak pokazuje jak możesz osiągnąć zamierzony cel.

W drugim załączniku wykonany na szybko (bez dbałości o szczegóły) import za pomocą ms query.
napisał: wywyż
postów: 7


umieszczony:
4 listopada 2012
00:37

  
skomplikowanie tego pliku wynika z tego, iż dane które są kopiowane do arkusza"import danych" pobierane są z innego arkusza, które z kolei są generowane przez zewnętrzny program i nie mam wpływu na stan tego arkusza i eksportu danych. Próbowałem tak jak radziłeś skorzystać z Microsoft Query, ale nie widzi on tabel w Excelowskim pliku z danymi (dokładniej to nic w nim nie widzi :( ). Poza tym trudno określić jaki zakres ma zostać raportowany, stąd chcę umożliwić użytkownikom wybór poprzez UserForm. Dodatkowo jest tam kilku "operatorów" (w arkuszu "import danych", ze względu na których także musi istnieć rozróżnienie, czyli kolejne raporty). Zostawiłem tylko jeden arkusz "01" aby stanowił przykład, ale jest ich 7 (co tłumaczy dlaczego w userformie istnieje tyle możliwości.
Jestem świadomy, że zastosowane powiązań, formuł w arkuszach można by trochę uprościć, ale staram się radzić sobie w większości przypadków na własną rękę.
napisał: Trebor
postów: 1209


umieszczony:
3 listopada 2012
21:56

  
Dziś już trochę dla mnie późno, a jak widzę projekt jest dość złożony.
Import danych za pomocą formuł nie jest najlepszym rozwiązaniem. Proponuję wykorzystanie istniejących mechanizmów Excela. Będę pisał na bazie Excela 2007.
Z menu Dane wybierz Dane Zewnętrzne i Z innych źródeł następnie wskaż na Microsoft Query. Aby nie odbierać całej zabawy. Spróbuj doprowadzić do importu danych określając w kreatorze daty jakich dane mają dotyczyć.
Sugeruję dopiero tak przygotowane dane poddać obróbce makrami tworząc wymagane wydruki.

Jeśli będziesz wolał pozostać przy swojej wersji to do projektu możemy wrócić w dniu jutrzejszym lub w dowolnym innym.
napisał: wywyż
postów: 7


umieszczony:
3 listopada 2012
20:41

  
nazwa pliku rozmiar
VBA.xlsm 113.75 kB

Bardzo dziękuję za szybką odpowiedź, jestem niesłychanie miło zaskoczony szybkością
Podana propozycja działa, ale nie do końca tak jak bym chciał. Tzn można rzeczywiście wybrać datę, lecz są również puste pola (sądzę że jest to spowodowane tym, iż w tym odwołaniu znajdują się formuły, lecz samych wartości brak). Tak więc, proszę o podanie takiego kodu, który będzie w combobox'ie pozwalał tylko na wyświetlanie się wartości, które faktycznie istnieją (a nie komórek, w których znajdują się tylko formuły). Jednak nie bardzo wiem jak wygenerować wybraną wartość do danej komórki w arkuszu (chciałbym żeby znajdowała się w komórce przy "Data od" i "data do". Potem za pomocą formuł poradzę sobie ze skopiowaniem tej wartości we wskazane miejsca w arkuszu "01" co będzie miało odniesienie do wyglądu raportu.
Odnośnie drukowania, to ukrywanie niepotrzebnych wierszy nie bardzo ma możliwość poprawnego działania, co widać w arkuszu "01". Tam nie ma co ukryć, a chciałbym żeby zaznaczył się tylko ten zakres, który tworzy dany raport.
Sądzę, że załączony plik chociaż trochę pomoże w zrozumieniu tego co oczekuję.
napisał: Trebor
postów: 1209


umieszczony:
3 listopada 2012
19:40

  
Witaj na forum.
Listę Combobox możesz wypełnić na kilka sposobów. Poniżej jeden z nich:
Private Sub UserForm_Initialize()
ComboBox1.List = Sheets("Arkusz2").Range("A1:A" & Sheets("Arkusz2").Cells(Rows.Count, 1).End(xlUp).Row).Value
End Sub


Daty w formantach to dość złożony problem.

Co do wydruku to proponuję ukrywanie wierszy, które są zbędne.

Jeśli dasz Twój problem w załączniku, podpowiedź będzie dokładniejsza.
napisał: wywyż
postów: 7


umieszczony:
3 listopada 2012
18:50

  
Witam!
To mój pierwszy post i zarazem pierwsza prośba o pomoc przy VBA. Niestety nie na wszystko potrafię znaleźć odpowiedź nie zadając pytań, więc pokusiłem się o zgłoszenie się z potrzebą...
Próbuję stworzyć UserForm, w którym będą m.in. dwa ComboBox'y, w których będzie można wybrać datę z pewnego zakresu. Zakres ten stale się zwiększa, ale nie zawsze przyrost ten jest liniowy (niektóre daty nie występują). Zakres tych dat jest ujęty w kolumnie w arkuszu.
Problem polega na tym aby to ze sobą połączyć. Widziałem jak można stworzyć ComboBox'a wpisując wszystkie możliwości wyboru, ale tutaj to niestety się nie da... Aha.. Wybrana data powinna zostać wpisana w określoną komórkę arkusza (ale z tym sobie chyba poradzę).

Przy okazji... jak zaznaczyć tylko komórki które mają wpisane wartości? Wyjaśniam problem: Daty, które mają być pobierane z ComboBox'ów mają ograniczać z góry i z dołu raport, który następnie ma być drukowany. Jeśli będzie to mały zakres to i komórek z danymi będzie mało, a jeśli zakres będzie większy, to i raport się "wydłuży". Tak więc chciałbym żeby zaznaczyły się komórki które mają wpisane dane, a następnie
Selection.PrintOut

i już się wydrukuje to co chcę.
Z góry bardzo dziękuję za pomoc.


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z
Warning: Unknown: write failed: Disk quota exceeded (122) in Unknown on line 0 Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0