Milan-158 - ĎAkujem za pomoc a pevné nervy viem že to bolo so mnou ťažké ale nakoniec sa to podarilo :) už to ide tak ako som chcel a k tej verzií 4 nejakým nedopatrením sa mi uložila do stiahnutých súborov a nevsimol som si to a stále som sa pohyboval v tej verzií 3 za čo sa ospravedlňujem že som mrhal tvojim časom
Ďakujem cenním si toho že sa nájdu ľudia, ktorý pomôžu a majú pevné nervy pri prípadoch ako som ja
Ak zadám ID do txtID tak mi nájde požadovaný záznam
riešil som to cez txtID_Change()
pri zmene textboxu txtID vyhladá záznam s požadovaným ID
poslal som verziu, ktorú si mi poslal ty. ja si to skusam dat do toho mojho teraz som tam implementoval tú zálohu ale nedal som to na samostatné tlacidlo ale pridal som funkciu do tlacidla ulozit zmenu... funguje mi to je to super :)
ĎAKUJEM ZA POMOC
ešte malá otázka .... ak by som chcel hladať ID nie podla ActiveCell ale zadaním hodnoty do ID a podla hodnoty ID mi najde udaje viem ako by som to urobil ked je TextBox pomenovaný textbox ale teraz ked idem podla teba a premenoval som si vsetky TF a CB tak som stále neúspesný
vedel by si mi poradit? - teoreticky presne tak ako som to mal v tom prvotnom excely co som sem postoval (50903_vba.zip)
Ďakujem za pomoc
Už to behá presne tak jak sme si to predstavoval ale ešte jedna vec
jak urobím zálohu dat
- v Hárok 1 -> ID 1 (zmena dátumu od a do)
- v Hárok 2 -> najde volné ID a prekopíruje stlpec B,C,D,E,F - s pôvodným dátumom vid v priloženom excely
-- ĎAKUJEM ZA PEVNÉ NERVY
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é ?
Update: už mi to zapisuje :)
Ďakujem
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 :D
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 :D
Ď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árok1
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
už to behá Ďakujem
Jiří497 napsal/a:
Vytvořit proceduru:
Private Sub TextBox1_Change()
V proceduře pak:
1. zjistím si nejvyšší ID (ve vašem případě 50)
2. pokud je UserForm1.TextBox1.Value větší než nejvyšší ID tak UserForm1.TextBox1.Value = ""
Jinak v tom přiloženém makru máte zřejmě chybu. Nejdřív naplníte proměnnou PoslednyRadek a následně použijete v cyklu proměnnou emptyRow For i = 1 To emptyRow Myslím, že ten cyklus vůbec neproběhne, protože emptyRow je nula (pokud se tedy nejedná o globální proměnnou)
Zdravím,
špekulujem ako na jednu záludnú vec
mám ID od 1-50 ak zadám 51 tak mi ostanú načítané údaje z ID 5 ako by som mohol ošetriť problém ak zadám ID vacsie ako je v tabulke aby mi obsah vymazalo ?
Ďakujem
Sub PridajUprav()
Dim id As Integer, i As Integer, j As Integer,
Dim PoslednyRiadok As Long
If UserForm1.TextBox1.Value <> "" Then
id = UserForm1.TextBox1.Value
PoslednyRiadok = WorksheetFunction.CountA(Range("A:A"))
i = 0
For i = 1 To emptyRow
If Cells(i + 1, 1).Value = id Then
For j = 2 To 6
Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
Next j
End If
Next i
For j = 1 To 6
Cells(PoslednyRiadok + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
Next j
End If
End If
End Sub
elninoslov napsal/a:
Pr. načítania oblasti buniek do poľa:
Sub Kontrola_hodnoty()
Dim Pole(), Riadkov As Long, i As Long, MSG As String
With Worksheets("Hárok1")
Riadkov = .Cells(Rows.Count, "A").End(xlUp).Row - 1
If Riadkov = 0 Then MsgBox "Chábajú data.", vbExclamation: Exit Sub
Pole = .Range("A2:F2").Resize(Riadkov).Value
End With
For i = 1 To Riadkov
If Pole(i, 6) < 90 Then
MSG = MSG & vbNewLine & Join(Array(Pole(i, 1), Pole(i, 2), Pole(i, 3), Pole(i, 4), Pole(i, 5), Pole(i, 6)), " / ")
End If
Next i
MsgBox IIf(MSG = "", "všetko OK", "Tieto hodnoty sú pod limitom <=90" & MSG), IIf(MSG = "", vbInformation, vbCritical)
End SubPříloha: 50488_hodnoty_buniek_do_pola.zip (17kB, staženo 2x)
Zdravím,
som samouk a rád by som sa naučil lepšie pracovať s VBA
ale narazil som na prekážku
ak mám viacrozmerné pole ktoré viem že má
Pole(a,b,c)
ako nažítam jednotlivé bunky do pola ?
nepoznám počet riadkov ktoré sú zaplnené
ale viem že
do pola a(String) naťahujem bunky z A stĺpca do pola b(String) taťahujem B stĺpec a do c(Integer) naťahujem F stĺpec
do MsgBoxu chcem vypísať len tie "riadky" kde má F hodnotu menšiu ako 90
Ďakujem za pomoc
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.