Napravio bih UserForm, ali sam "kratak" sa VBA kodovima. Kako da na Listu "Podaci" (za početak) postavim UserForm? Evo, stigao sam doovde i dalje - ni makac! Kako napisati kod za ovaj obrazac? I, molio bih, da me uputite na neki tutorial za UserForm u Excel-u (ako je moguće na srpskom - illi sličnim jezicima), sa urađenim i objašnjenim primerima.
UserForm - Kako...
Zaključano
Zakačeno
Pozdrav
Ne znam jesi li mislio nešto ovako.
Formu pozivaš sa kontrolnim dugmetom.
Ne znam jesi li mislio nešto ovako.
Formu pozivaš sa kontrolnim dugmetom.
Potpis
Jasmin
U ovom primeru to radi. Međutim, kada sam to prebacio u Bazu koju radim - unešeni podatak mi je ubačen tek na 501 mesto (postoji kreirana tabela sa mogućih 500 unosa), iako je podatak trebao biti ubačen na mesto broj dva. I još nešto - "ne razlikuje" već upisane podatke. Recimo, svaki naredni redni broj može biti isti kao i prethodni i svako novo ime i prezime može biti kao i prethodno. Znači, kako napisati u kodu da određene kolone ne smeju imati identične (duple) podatke?
I dalje mi je potreban tutorial sa primerima za pravljenje UserForm u Excel-u (na srpskom, hrvatskom, engleskom,...)
I dalje mi je potreban tutorial sa primerima za pravljenje UserForm u Excel-u (na srpskom, hrvatskom, engleskom,...)
Malo sam doradio (iskombinovao) upisani kod i sada radi.
Procedura ubacuje podatke gde treba. Malopre nije radila jer je tražila prvi slobodan (kompletan) red u određenoj tabeli, a njoj su bile popunjene ćelije za "Redni broj" sve do broja 500.
Ostaje pitanje:
Da li mogu da preko Forme (i njenog koda) zabraniti unos identičnih podataka u određenu kolonu (recimo: Ime i prezime). Takav sam unos "zabranio" u tabeli (koloni) preko Validacije; Znači direktno u Tabeli nije moguće uneti dva identična imena i prezimena, ali kada se to uradi preko Forme, tabela (odnosno - Validacija kolone) dozvoli takav unos. Šta bi radio, u tom slučaju, da su mi podaci (recimo) JMBG - koji nikako ne smeju biti isti?
Procedura ubacuje podatke gde treba. Malopre nije radila jer je tražila prvi slobodan (kompletan) red u određenoj tabeli, a njoj su bile popunjene ćelije za "Redni broj" sve do broja 500.
Ostaje pitanje:
Da li mogu da preko Forme (i njenog koda) zabraniti unos identičnih podataka u određenu kolonu (recimo: Ime i prezime). Takav sam unos "zabranio" u tabeli (koloni) preko Validacije; Znači direktno u Tabeli nije moguće uneti dva identična imena i prezimena, ali kada se to uradi preko Forme, tabela (odnosno - Validacija kolone) dozvoli takav unos. Šta bi radio, u tom slučaju, da su mi podaci (recimo) JMBG - koji nikako ne smeju biti isti?
Uaci ovaj kod na list gdje kontrolišeš šifru ili nesto drugo.
Ovaj kod kontroliše stupac A ,i ne mozes unijeti identičan podatak u stupac A
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column <> 1 Or .Cells.Count > 1 Then Exit Sub
If WorksheetFunction.CountIf(Columns(.Column), .Value) > 1 Then
Application.DisplayAlerts = False
.ClearContents
Application.DisplayAlerts = True
MsgBox "Kupac vec postoji sa tom sifrom!"
End If
End With
End Sub
Ovaj kod kontroliše stupac A ,i ne mozes unijeti identičan podatak u stupac A
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column <> 1 Or .Cells.Count > 1 Then Exit Sub
If WorksheetFunction.CountIf(Columns(.Column), .Value) > 1 Then
Application.DisplayAlerts = False
.ClearContents
Application.DisplayAlerts = True
MsgBox "Kupac vec postoji sa tom sifrom!"
End If
End With
End Sub
Potpis
Jasmin
A evo jedna stranica sa primjerima za rad,na engleskom.
http://www.globaliconnect.com/...ty&catid=79&Itemid=475
http://www.globaliconnect.com/...ty&catid=79&Itemid=475
Potpis
Jasmin
Citat:
jaskojsako:
Uaci ovaj kod na list gdje kontrolišeš šifru ili nesto drugo.
Ovaj kod kontroliše stupac A ,i ne mozes unijeti identičan podatak u stupac A
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column <> 1 Or .Cells.Count > 1 Then Exit Sub
If WorksheetFunction.CountIf(Columns(.Column), .Value) > 1 Then
Application.DisplayAlerts = False
.ClearContents
Application.DisplayAlerts = True
MsgBox "Kupac vec postoji sa tom sifrom!"
End If
End With
End Sub
Uaci ovaj kod na list gdje kontrolišeš šifru ili nesto drugo.
Ovaj kod kontroliše stupac A ,i ne mozes unijeti identičan podatak u stupac A
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column <> 1 Or .Cells.Count > 1 Then Exit Sub
If WorksheetFunction.CountIf(Columns(.Column), .Value) > 1 Then
Application.DisplayAlerts = False
.ClearContents
Application.DisplayAlerts = True
MsgBox "Kupac vec postoji sa tom sifrom!"
End If
End With
End Sub
Da li je ovo kod za kontrolu tabelarnog unosa ili za kontrolu unosa putem Forme ili oboje? U kom delu koda treba promeniti oznaku kolone - recimo kolona (stubac) C?
Zašto (gde i zbog čega) mi se javlja greška u formuli:
=OFFSET(List2!$A$2,0,0,COUNTA(List2!$A:$A)-1,1)
kada hoću da je upišem kao referencu za jednu Listu. Inače pratim stranicu:
http://www.contextures.com/xlUserForm02.html
=OFFSET(List2!$A$2,0,0,COUNTA(List2!$A:$A)-1,1)
kada hoću da je upišem kao referencu za jednu Listu. Inače pratim stranicu:
http://www.contextures.com/xlUserForm02.html
Citat:
pcpopovic:
Napravio bih UserForm, ali sam "kratak" sa VBA kodovima. Kako da na Listu "Podaci" (za početak) postavim UserForm? Evo, stigao sam doovde i dalje - ni makac! Kako napisati kod za ovaj obrazac? I, molio bih, da me uputite na neki tutorial za UserForm u Excel-u (ako je moguće na srpskom - illi sličnim jezicima), sa urađenim i objašnjenim primerima.
Napravio bih UserForm, ali sam "kratak" sa VBA kodovima. Kako da na Listu "Podaci" (za početak) postavim UserForm? Evo, stigao sam doovde i dalje - ni makac! Kako napisati kod za ovaj obrazac? I, molio bih, da me uputite na neki tutorial za UserForm u Excel-u (ako je moguće na srpskom - illi sličnim jezicima), sa urađenim i objašnjenim primerima.
Pogledaj Excel VBA and User Forms (5 part section)
Potpis
Have you found helpful examples, solutions or ideas-in-work, please consider the
following:
• Citation of *actual page* you are going to using is welcome.
• Have you saw "Value Added" examples you are going to incorporate to your
profitable blog, daily job or any money making venture: How about online donation?
↗Ana & Vlade Divac Foundation
Hvala!
following:
• Citation of *actual page* you are going to using is welcome.
• Have you saw "Value Added" examples you are going to incorporate to your
profitable blog, daily job or any money making venture: How about online donation?
↗Ana & Vlade Divac Foundation
Hvala!
Malo ću sam sa sobom: "Umesto zareza se pišu tačke i zarezi"!
izmenjeno 1 put, poslednji put pcpopovic 29.03.2016. u 17:03
Izmene poruke
- pcpopovic29.03.2016. u 17:03zapis iz teksta poruke
Samo, ako može, na šta se odnose brojevi: 2;0;0 (u prvom delu formule)i: -1;1 (u drugom delu formule)?
=OFFSET(List2!$A$2;0;0;COUNTA(List2!$A:$A)-1;1)
=OFFSET(List2!$A$2;0;0;COUNTA(List2!$A:$A)-1;1)
Citat:
pcpopovic: Malo ću sam sa sobom: "Umesto zareza se pišu tačke i zarezi"!
Citat:
pcpopovic: Samo, ako može, na šta se odnose brojevi: 2;0;0 (u prvom delu formule)i: -1;1 (u drugom delu formule)?
npr: poželjno je znati argumente određene funkcije (u ovom slučaju OFFSET funkcije ili COUNTA funkcije), ako ih ne znaš tada ih uočiš u okviru.
Na taj način možeš saznati na čega se odnosi određeni broj, adresa ćelije ili raspon ćellija. (vidi SS ispod)
izmenjeno 2 puta, poslednji put pcpopovic 03.04.2016. u 11:12
Izmene poruke
- pcpopovic03.04.2016. u 11:12zapis iz teksta poruke
- pcpopovic03.04.2016. u 11:11zapis iz teksta poruke
Formiram UserForm za jednu Excel bazu. "Napravio" sam modul, prema instrukcijama, za popunu jedne od tabela - i to funkcioniše... ali mi mi VBA "pravi" tabelu na Sheet-u na kome se nalazi dugme za poketanje forme.
Gde, u VBA kod-u, treba navesti putanju do ciljane tabele - odnosno "List"-a?
UserForm kod:
Modul kod:
End Sub
Da li je, možda, pravilo da Forma (kao i dugme koje ga pookreće) bude na istom "Sheet"-u na kome je i tabela?
Gde, u VBA kod-u, treba navesti putanju do ciljane tabele - odnosno "List"-a?
UserForm kod:
Code:
Option Explicit
Private Sub CommandButton1_Click()
EditAdd
End Sub
Private Sub CommandButton2_Click()
ClearForm
End Sub
Private Sub CommandButton3_Click()
Unload Me
End Sub
Private Sub TextBox1_Change()
GetData
End Sub
Private Sub UserForm_Initialize()
TextBox1.SetFocus
End Sub
Option Explicit
Private Sub CommandButton1_Click()
EditAdd
End Sub
Private Sub CommandButton2_Click()
ClearForm
End Sub
Private Sub CommandButton3_Click()
Unload Me
End Sub
Private Sub TextBox1_Change()
GetData
End Sub
Private Sub UserForm_Initialize()
TextBox1.SetFocus
End Sub
Modul kod:
Code:
Dim id As Integer, i As Integer, j As Integer, flag As Boolean
Sub GetData()
If IsNumeric(UserForm1.TextBox1.Value) Then
flag = False
i = 0
id = UserForm1.TextBox1.Value
Do While Cells(i + 1, 1).Value <> ""
If Cells(i + 1, 1).Value = id Then
flag = True
For j = 2 To 10
UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
Next j
End If
i = i + 1
Loop
If flag = False Then
For j = 2 To 10
UserForm1.Controls("TextBox" & j).Value = ""
Next j
End If
Else
ClearForm
End If
End Sub
Sub ClearForm()
For j = 1 To 10
UserForm1.Controls("TextBox" & j).Value = ""
Next j
End Sub
Sub EditAdd()
Dim emptyRow As Long
If UserForm1.TextBox1.Value <> "" Then
flag = False
i = 0
id = UserForm1.TextBox1.Value
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
Do While Cells(i + 1, 1).Value <> ""
If Cells(i + 1, 1).Value = id Then
flag = True
For j = 2 To 10
Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
Next j
End If
i = i + 1
Loop
If flag = False Then
For j = 1 To 10
Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value
Next j
End If
End If
Dim id As Integer, i As Integer, j As Integer, flag As Boolean
Sub GetData()
If IsNumeric(UserForm1.TextBox1.Value) Then
flag = False
i = 0
id = UserForm1.TextBox1.Value
Do While Cells(i + 1, 1).Value <> ""
If Cells(i + 1, 1).Value = id Then
flag = True
For j = 2 To 10
UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
Next j
End If
i = i + 1
Loop
If flag = False Then
For j = 2 To 10
UserForm1.Controls("TextBox" & j).Value = ""
Next j
End If
Else
ClearForm
End If
End Sub
Sub ClearForm()
For j = 1 To 10
UserForm1.Controls("TextBox" & j).Value = ""
Next j
End Sub
Sub EditAdd()
Dim emptyRow As Long
If UserForm1.TextBox1.Value <> "" Then
flag = False
i = 0
id = UserForm1.TextBox1.Value
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
Do While Cells(i + 1, 1).Value <> ""
If Cells(i + 1, 1).Value = id Then
flag = True
For j = 2 To 10
Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
Next j
End If
i = i + 1
Loop
If flag = False Then
For j = 1 To 10
Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value
Next j
End If
End If
End Sub
Da li je, možda, pravilo da Forma (kao i dugme koje ga pookreće) bude na istom "Sheet"-u na kome je i tabela?
Nije valjda da rešenja nema?
Kako bi trebalo promeniti VBA kod kad bi se ciljna tabela nalazila na Listu2 (recimo), a ne na Listu1?
Pozdrav,da li si mislio ovako
popunjava list2
prilog tvoj fajl
popunjava list2
prilog tvoj fajl
Potpis
Jasmin
Pa, mislim da ovo nije zadovoljavuća opcija. Kod unosa podataka, isti se upisuju u tabelu na "List2" - što je u redu, ali kod kontrole unosa - prikazuju se podaci iz tabele sa "List1".
Pozdrav,pa bila je izmjena na jednom dijelu forme
a sad je na svim,trebas se pozicionirati na koji list,tj koji list treba da se
puni podacima ili edituje ...
a sad je na svim,trebas se pozicionirati na koji list,tj koji list treba da se
puni podacima ili edituje ...
Potpis
Jasmin
Nisam mogao odgovoriti ranije. Hvala - to je to!