Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

VBA/Excel - Formularz wprowadzania danych do bazy

misiek294 16 Apr 2017 00:15 6165 4
  • #1
    misiek294
    Level 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.
  • Helpful post
    #2
    lanzul
    Level 30  
    misiek294 wrote:
    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)
  • #3
    misiek294
    Level 2  
    Dzięki, o coś takiego właśnie mi chodziło :D
    Mam nadzieje że poradzę sobie z modyfikacją tego okienka.

    
    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.
  • #4
    lanzul
    Level 30  
    misiek294 wrote:
    ... 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 ... :| ... :-) ...:
    Code: vbscript
    Log in, to see the code

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

    Wartość wyjściowa wypełnionej listy, ale z niewybranym wpisem na niej to:
    UserForm1.ComboBox1.ListIndex = -1
    Code: vbscript
    Log in, to see the code

    zaś, poniższe:
    Code: vbscript
    Log in, to see the code

    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:
    Code: vbscript
    Log in, to see the code

    , 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:
    Code: vbscript
    Log in, to see the code

    to wtedy przepisywanie do arkusza wygląda tak:
    Code: vbscript
    Log in, to see the code

    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 :?:
  • #5
    misiek294
    Level 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 !