[ pcpopovic @ 27.03.2016. 16:04 ] @
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.
[ jaskojsako @ 27.03.2016. 17:34 ] @
Pozdrav
Ne znam jesi li mislio nešto ovako.
Formu pozivaš sa kontrolnim dugmetom.
[ pcpopovic @ 28.03.2016. 11:54 ] @
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,...)
[ pcpopovic @ 28.03.2016. 17:07 ] @
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?
[ jaskojsako @ 28.03.2016. 22:54 ] @
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
[ jaskojsako @ 28.03.2016. 22:56 ] @
A evo jedna stranica sa primjerima za rad,na engleskom.

http://www.globaliconnect.com/...ty&catid=79&Itemid=475
[ pcpopovic @ 29.03.2016. 07:14 ] @
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

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?
[ pcpopovic @ 29.03.2016. 12:01 ] @
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
[ 3okc @ 29.03.2016. 12:37 ] @
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.

Pogledaj Excel VBA and User Forms (5 part section)
[ pcpopovic @ 29.03.2016. 12:39 ] @
Malo ću sam sa sobom: "Umesto zareza se pišu tačke i zarezi"!
[ pcpopovic @ 29.03.2016. 13:32 ] @
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)

[Ovu poruku je menjao pcpopovic dana 29.03.2016. u 17:03 GMT+1]
[ Ivek33 @ 29.03.2016. 20:51 ] @
Citat:
pcpopovic: Malo ću sam sa sobom: "Umesto zareza se pišu tačke i zarezi"!
Na EX YU području uglavnom se kao separator argumenata u Excel formuli koristi točka-zarez (;) ali to nije pravilo. Ako su ti postavke Windows OS-a na US tada se u Excelu kao separator argumenta koristi zarez (,)
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)?
Da bi brzo uočio dijelove formule tj. od kojih argumentata se sastoji formula ili bolje rečeno neka ugniježđena funkcija, potrebno je da selektiraš ćeliju sa formulom i klikneš na određeno mjesto unutar formule/funkcije (u formula baru ili polju za unos formule). Tada ti se pojavi okvir sa argumentima formule/funkcije i BOLD slova argumenta formule/funkcije.

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)

[att_img]

[ pcpopovic @ 01.04.2016. 17:03 ] @
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:

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


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

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?

[Ovu poruku je menjao pcpopovic dana 03.04.2016. u 11:11 GMT+1]

[Ovu poruku je menjao pcpopovic dana 03.04.2016. u 11:12 GMT+1]
[ pcpopovic @ 03.04.2016. 10:13 ] @
Nije valjda da rešenja nema?
[ pcpopovic @ 05.04.2016. 09:35 ] @
Kako bi trebalo promeniti VBA kod kad bi se ciljna tabela nalazila na Listu2 (recimo), a ne na Listu1?
[ jaskojsako @ 06.04.2016. 22:26 ] @
Pozdrav,da li si mislio ovako
popunjava list2
prilog tvoj fajl
[ pcpopovic @ 07.04.2016. 06:44 ] @
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".
[ jaskojsako @ 07.04.2016. 11:39 ] @
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 ...
[ pcpopovic @ 10.04.2016. 15:33 ] @
Nisam mogao odgovoriti ranije. Hvala - to je to!