< návrat zpět

MS Excel


Téma: Ukladanie hodnoty cez userform + xls súbor rss

Zaslal/a 25.6.2021 15:38

Zdravím,

mám dotaz mam userform kde si načítam data podla ID

moja otáka znie

ako si uložím do Hárok2 data ešte pred prepísaním ?

skúšal som ale nejde mi to ani trochu

Aktuálny kód čo sa mi podarilo naprogramovať aj s vašou pomocou a zatial mi to funguje

ĎAKUJEM za pomoc

Private Sub CommandButton1_Click()
Dim PoslednyRiadok As Integer


If id < koniec Then
CommandButton1.Visible = True
End If

Pridaj
End Sub

Private Sub CommandButton2_Click()
Vymaz
End Sub

Sub Vymaz()

For j = 1 To 6
UserForm1.Controls("TextBox" & j).Value = ""
Next j

End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Sub Pridaj()

End Sub

Sub Uprav()

'Jedná sa mi o tuto funkciu<- ak kliknem na tlacidlo uprav musí mi zapísať data riadka xy a stlpca 2-6 z Hárok1 do hárok 2 a automaticky priradiť ID v Hárok
do stĺpca 1 a upravit bunky 2-6 v Hárok1

End Sub

Private Sub CommandButton4_Click()
Dim koniec As Integer

koniec = Sheets("Hárok1").Cells(Rows.Count, "A").End(xlUp).Row
UserForm1.TextBox1.Value = koniec - 1
MsgBox "Posledné volné ID je " & koniec - 1
UserForm1.TextBox2.Value = ""
UserForm1.TextBox3.Value = ""
UserForm1.TextBox4.Value = ""
UserForm1.TextBox5.Value = ""
UserForm1.TextBox6.Value = ""

End Sub

Private Sub Label6_Click()

End Sub

Private Sub TextBox1_Change()

Dim id As Integer, i As Integer, j As Integer, k As Integer, l As Integer
Dim koniec As Integer

TextBox4.MultiLine = True
koniec = Sheets("Hárok1").Cells(Rows.Count, "A").End(xlUp).Row

If IsNumeric(UserForm1.TextBox1.Value) Then

i = 1
id = UserForm1.TextBox1.Value




Do While Sheets("Hárok1").Cells(i, 1).Value <> ""

If Sheets("Hárok1").Cells(i, 1).Value = id Then
For j = 2 To 6
UserForm1.Controls("TextBox" & j).Value = Cells(i, j).Value


Next j

End If

i = i + 1

Loop



End If

If koniec < id Then
CommandButton5.Visible = False
CommandButton1.Visible = True
UserForm1.TextBox2.Value = ""
UserForm1.TextBox3.Value = ""
UserForm1.TextBox4.Value = ""
UserForm1.TextBox5.Value = ""
UserForm1.TextBox6.Value = ""

Else

CommandButton1.Visible = False
CommandButton5.Visible = True


End If

End Sub

Příloha: zip50903_vba.zip (35kB, staženo 13x)
Zaslat odpověď >

Strana:  1 2   další »
#050904
avatar
OK, no to bude na dýl.
Jestli rozumím správně vyjádření "ako si uložím do Hárok2 data ešte pred prepísaním ?", tak chceš po vyplnění formuláře uložit data do tabulky. Ale jistotu nemám, mate mně tam to "ešte pred prepísaním".
Slušný form má umožńovat načtení zaznamu z listu do formu, listování jednotlivými záznamy, editaci existujících záznamů a uložení nového. S čím chceš začít?citovat
#050905
avatar
Tak fajn. V přiloženém souboru je vyřešené načítání dat z listu do formuláře.
Kód je komentovaný, takže to určitě pochopíš.
Prvky formuláře jsem trochu přejmenoval, aby bylo zřejmé o jaký typ jde (txt... = textbox, btn...= tlačítko) a pak co nese za informaci. Čili txtID je mnohem výstižnější než Textbox4.
Jak si všimneš, u některých prvků jsem měnil vlastnosti.

Až to vstřebáš, tak další částí bude ukládání dat z formu na list
Příloha: zip50905_ucim_sa_vba2.zip (32kB, staženo 16x)
citovat
#050906
avatar
Ďakujem za pomoc

tým predtým než sa prepíše bunka som myslel že ak načítam napr ID 5 zobrazí sa mi v userform1 obsah toho ID a zobrazí sa mi možnosť úpravy ak upravím niektorú bunku konkrétne dobu platnosti osvedčenia tak pôvodné data ktoré boli zapísane sa mi prekopírujú do Hárok 2
Príklad
(Pôvodné data v bunkách)
ID Druh dokumentu Obsah Platnosť od Platnosť do
1 Certifikát Certima ..... 20.6.2019 20.6.2024

Ak upravím

ID Druh dokumentu Obsah Platnosť od Platnosť do
1 Certifikát Certima ..... 20.6.2024 20.6.2029

tak pôvodné data sa mi uložia na prvý volný riadok v Hárok2
a upravené data nahradia data v Hárok1citovat
#050907
avatar
To je důvod, proč jsem do formu přidal textbox s informací o číslu řádku.
Doufám, že s verzí 2 už ses seznámil a můžeme přistoupit k verzi 3. Pro účely zjišťování posledního řádku se vyplatí mít extra funkci, která jej spolehlivě najde i v případě, když je v tabulce zapnutý nějaký filtr - takže to tam taky najdeš.
Pro ukládání údajů z formuláře na list používám jednu rutinu, které předávám dva argumenty: číslo řádku a informaci o tom, jestli se jedná o nový záznam anebo editaci existujícího.
Všimni si jaké typy procedur jsou v kódu formuláře (událostní) a že ty volané je lepší mít v samostatném modulu.
Příloha: zip50907_ucim_sa_vba3.zip (37kB, staženo 15x)
citovat
#050908
avatar
Tak soubor v příloze už obsahuje to úplné minimum, které opravdický funkční formulář musí umět, čili umožňuje listovat jednotlivými záznamy a editovat je. V případě, že je na listě nasazený filtr, tak neviditelné řádky ignoruje.

Pro listování bylo potřebné změnit vlastnost formuláře ShowModal na False (i když dalo se to ošetřit i přes ignoraci chyby On Error Resume Next). Toto rovněž umožňuje při otvřeném formuláři kopírovat hodnoty z a do formu, což při ShowModal = True nejde.

Věřím, že přidání poznámky, vyčištění kolonek atd zvládneš sám. Rovněž odstranění záznamu by už neměl být problém. Šak uvidíme... (možná)
Příloha: zip50908_ucim_sa_vba4.zip (46kB, staženo 20x)
citovat
#050909
avatar
táto tretia verzia mi trochu blbne resp neuklada mi to... dnes som mal málo času kedže si to prepisujem resp snažím sa pochopit a prepisujem to do svojich podmienok tak trochu mi to trvá ale verím že na to prídem

Ďakujem za ochotu :) viem že mi to trvá bohužial pracujem ako servisný technik vyhradených technických zariadení tak času na ďalšie vzelávanie mám málo ale snažím sa :)

preto si cením každej pomoci a dakujem za trpezlivost :Dcitovat
#050910
avatar
Takže ešte tam mám chybu lebo už mi vloží vygenerované ID ale nevloží ostatné TextBoxy :D
takže skoro úspech ešte musím zistit kde je chyba a potom skusim spravit upravu :) a potom skusim dorobit ukladanie do hárku 2

zatim dakujem za pomoc :) isto ju ešte budem potrebovat :Dcitovat
#050911
avatar
Update: už mi to zapisuje :)
Ďakujemcitovat
#050912
avatar
Jasně že tam lze ještě hodně vylepšit - např. zadávání datumu pomocí kalendáře anebo pomocí lomítka (jednou rukou), kontrola zdali je zadaná hodnota opravdu datum atd...
Nebo informační hláška při editaci záznamu, kolik hodnot se chystáš v daném záznamu změnit. Taky v tom svém formuláři zatím nemáš ComboBox, Listbox, OptionButton, CheckBox jakožto užitečné a elegantní vychytávky pro maximalizaci uživatelského komfortu...citovat
#050913
avatar
Mám otázku, ak si načítam na textboxu jednotlivé bunky a zmenim datum napríklad prečo mi to neuloží iba vygeneruje ID
ale to čo tam je v textboxoch neuloží ale ak tam všetko pracne vyypíšem tak sa to uloží :D
je možné že ak ručne zmením ID že sa mi vymažú premenné ?citovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 0:34

Vynásobit hodnoty kurzem - Power Query

Alfan • 24.4. 16:32

Relativní cesta - zdroje Power Query

Alfan • 24.4. 15:44

Relativní cesta - zdroje Power Query

elninoslov • 24.4. 14:26

Jak odstraním duplicitní údaje

Mirek8 • 24.4. 12:13

Jak odstraním duplicitní údaje

elninoslov • 24.4. 8:57

Vyhledej

PavDD • 24.4. 8:56