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/Excel - Formularz wprowadzania danych do bazy

misiek294 16 Kwi 2017 00:15 2028 4
  • #1 16 Kwi 2017 00:15
    misiek294
    Poziom 2  

    Witam, jak stworzyć okienko za pomocą VBA w którym dodam lub usunę dane do stworzonej już bazy ?

    Dodatkowo żeby można było rozwinąć możliwe w okienku i wybrać już z istniejących. Wprowadzić datę oraz ilość.

    Pozdrawiam.

    1 4
  • Pomocny post
    #2 16 Kwi 2017 04:14
    lanzul
    Poziom 26  

    misiek294 napisał:
    Witam, jak stworzyć okienko za pomocą VBA w którym dodam lub usunę dane do stworzonej już bazy ?

    Dodatkowo żeby można było rozwinąć możliwe w okienku i wybrać już z istniejących. Wprowadzić datę oraz ilość.

    :D :D :D
    Zupełne początki, tak od początku, z początkowym pączątkiem ?
    Przykład ..na.zip Download (17.73 kB)

    0
  • #3 16 Kwi 2017 11:53
    misiek294
    Poziom 2  

    Dzięki, o coś takiego właśnie mi chodziło :D
    Mam nadzieje że poradzę sobie z modyfikacją tego okienka.

    Code:

    Sub ini()
    Dim wartosc2 As Variant

    wartosc2 = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N") '14 wpisów


    Te wartości trzeba wprowadzać ręcznie ?
    Mam ich w bazie ponad 30 - numerów oraz nazw.

    Dodano po 1 [godziny]:

    Więc chodzi o taką bazę -
    Po wprowadzeniu danych powinien sie dodać lub usunąć cały wiersz.

    0
  • #4 16 Kwi 2017 18:22
    lanzul
    Poziom 26  

    misiek294 napisał:
    ... wartosc2 = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N") '14 wpisów

    Te wartości trzeba wprowadzać ręcznie ?
    Mam ich w bazie ponad 30 - numerów oraz nazw ...

    Przecież miał to być tylko przykład :D ... pewnie że nie trzeba ... :D

    Do przejrzenia zmiany w "ini", "dopisz_do_bazy" oraz "usun_z_bazy"
    Przykład o...i_0001.zip Download (20.55 kB)
    :D

    Dla wielu list do wypełnienia trzeba po prostu 'rozmnożyć' zmienne takie jak 'wartosc2', nadać im właściwe dla nich nazwy oraz instrukcjami zliczającymi ilość niepustych wierszy w danej kolumnie (mniej 1 wiersz na nagłówek) wyliczyć im ilość wpisów do wstawienia na daną listę po czym przypisać je do właściwości ".List()" danej listy.

    Instrukcje zliczające ilość niepustych komórek mają różną postać w zależności od upodobań stosujących je, u mnie jest to np.: funkcja arkuszowa "CountA()", czyli po polsku "ILE.NIEPUSTYCH()" w postaci:
    "w = Application.CountA(ThisWorkbook.Sheets(ustawienia).Columns(1))"
    czyli niepuste wiersze liczone po kolumnie "A" = Columns(1)

    Inni wolą używać do tego 'czystej składni vba' w postaci:
    w = ThisWorkbook.Sheets(ustawienia).Cells(Rows.Count, 1).End(xlUp).Row
    lub
    w = ThisWorkbook.Sheets(ustawienia).Range("a1").CurrentRegion.Rows.Count,
    gdzie numer kolumny, w której liczy się niepuste komórki, to odpowiednio jedynka w "Cells(Rows.Count, 1)" i literka "a" w adresie Range("a1").
    W opcji z "CurrentRegion.Rows" trzeba tylko uważać, aby były zachowane jednokolumnowe odstępy pomiędzy danymi do list, gdyż inaczej polecenie 'wybierze sobie do liczenia' kolumnę z największą ilością wpisów.
    A potem to już tylko pętla ... :| ... :-) ...:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    ... i przypisanie zmiennej do .List() danej listy.

    Wartość wyjściowa wypełnionej listy, ale z niewybranym wpisem na niej to:




    UserForm1.ComboBox1.ListIndex = -1
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    zaś, poniższe:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    to ustawienie tyczące się wyświetlania w rozwijanej liście dwóch kolumn z dannymi ".ColumnCount = 2", ze wskazaniem, że do arkusza mają być przepisywane dane z pierwszej kolumny ".TextColumn = 1", a ".ColumnWidths = "100;50", to odpowiednio szerokości danych kolumn w rozwijanej liście.
    I tu mała komplikacja - w przypadku list 'jednokolumnowych', przepisywanie danych do arkusza jak w przesłanym przykładzie:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    , natomiast w przypadku list 'zasysających' dane z tablic wielowymiarowych, trzeba się już odwoływać do danych wpisów po indeksach, tj. jeśli do zmiennej przypisaliśmy dwie dane, np: nazwisko pracownika i jego identyfikator i tablica ta wygląda jak np: dane_pracownika(indeks1, indeks2), gdzie indeks1 to kolejne nazwiska, a indeks2 to identyfikatory i zmienna 'narastała' tak jak poniżej:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    to wtedy przepisywanie do arkusza wygląda tak:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    Jak sobie ustawimy inny sposób wypełniania tablicy, to wtedy trzeba poprzestawiać to i owo ...
    ... a jeśli coś tu pokręciłem i poprzekręcałem, to koledzy z forum na pewno poprawią ... żeby tylko za bardzo "od czci i wiary" nie odsądzili .... :D :?:

    0
  • #5 09 Maj 2017 21:05
    misiek294
    Poziom 2  

    Hej, potrzebuję zrobić kartotekę magazynową w excelu.
    Zrobiłem wzór mniej więcej jak to ma wyglądać, ale nie potrafię wstawić do kodu vba funkcji przycisków.
    Z góry dziękuję jeśli komuś będzie się chciało na to zerknąć i ewentualnie dać mi jakieś wskazówki ;)
    Pozdrawiam !

    0