myslim ye Ti to vyhodi eror zakazdym ked Cells(i, 35).Value = 1, kedze podmienka Cells(i, 14).Value <> Cells(j, 32).Value bude splnena castejsie ako si myslis, skus si to odkrokovat (F8 v editore VBA, mozno pomoze aj Cells(x, y).Select - aby si videl co ti prave porovnava) a porozmyslat, myslim ze v tomto budes musiet pouzit dalsiu "pomocnu" premennu.
ak sa budem velmi nudit tak Ti to napisem
Sub Validation2()
existuju_rovnake = False
For i = 13 To 5000
For j = 13 To 35
If Cells(i, 14).Value = Cells(j, 32).Value Then existuju_rovnake = True
Next j
Next i
For i = 13 To 5000
If Cells(i, 35).Value = 1 And existuju_rovnake = False Then
MsgBox ("Error")
End Sub
End If
Next i
End Sub
nudil som sa , skus, neskusal som
zeby makra?
urcite tam mas dost veci ktore su kazdy mesiac rovnake - robis tabulku z tej istej oblasti, usporiadas nieco ..., a to by sa dalo riesit aj obycajnym zaznamom makra - to Ti uz dost pomoze, a dalej podla toho co by si dokazal naprogramovat , cykly , podmienky (ja som zacinal asi pred dvoma rokmi podobne , kazdy mesiac report rucne, teraz stiahnem zo systemu 4 subory a stlacim start makra a vysledok mam v novom zosite s nazvom aktualneho mesiaca, poctom pracovnych dni..., za par sekund)
"marjankaj"
dakujem za vysvetlenie , uz to chapem
OK pani , to nieje zly napad skusim to teda cez OK(i).
ps neda sa predsa len vytvorit to pole premennych? - urcite ano lebo vypis hodnot v cykle z pola premennych mi funguje (obsah premennych mozem vypisat
do buniek) len nefunguje zapis do premennych v poli
zatial dakujem za nakopnutie
neviem ci Ti niekto vyrobi cyklus , 20 nieje tak vela tak si to nakopiruj (ja momentalne riesim nejakych 120 a bojim sa ze to budem musiet tiez natukat rucne) - to X som tam dal lebo neviem do ktoreho boxu chces celkovy vysledok
Private Sub TextBox2_Change()
If IsNumeric(Me.TextBox2.Text) And Len(Me.TextBox2.Text) > 0 And Len(Me.TextBox3.Text) > 0 Then
Me.TextBox4.Text = CSng(Me.TextBox2.Text) + CSng(Me.TextBox3.Text)
Me.TextBox_X.Text = CSng(Me.TextBox4.Text) + CSng(Me.TextBox8.Text) + CSng(Me.TextBox12.Text) + CSng(Me.TextBox16.Text)+ CSng(Me.TextBox20.Text)...............
Else
Me.TextBox4.Text = ""
End If
End Sub
Private Sub TextBox3_Change()
If IsNumeric(Me.TextBox2.Text) And Len(Me.TextBox2.Text) > 0 And Len(Me.TextBox3.Text) > 0 Then
Me.TextBox4.Text = CSng(Me.TextBox2.Text) + CSng(Me.TextBox3.Text)
Me.TextBox_X.Text = CSng(Me.TextBox4.Text) + CSng(Me.TextBox8.Text) + CSng(Me.TextBox12.Text) + CSng(Me.TextBox16.Text)+ CSng(Me.TextBox20.Text)...............
Else
Me.TextBox4.Text = ""
End If
End Sub
dik za snahu ale bohuzial to neriesi moj problem, Ty davas do pola uz hodnoty, ja tam musim mat premenne ktore si musia zachovat hodnoty (nechce sa mi vypisovat 120 riadkov typu x = 0, y = 0 ........)
co potrebujem:
Sub pokus()
' mam vypocet ktory mi naplni premenne OK1 = 12, OK2 = 15, OK3 = 45 ...................... (v dalsom cykle sa zmenia)
pole = Array(OK1, OK2, OK3, OK4, OK5, OK6, OK7, OK8, OK9, OK10, OK11, OK12, OK13, OK14, OK15, OK16, OK17, OK18, OK19, OK20, OK21, OK22, OK23, OK24, OK25, OK26, OK27, OK28, OK29, OK30, OK31, OK32, OK33, OK34, OK35, OK36, OK37, OK38, OK39, OK40, OK41, OK42, OK43, OK44, OK45, OK46, OK47, OK48, OK49, OK50, OK51, OK52, OK53, OK54, OK55, OK56, OK57, OK58, OK59, OK60, OK61, OK62, OK63, OK64, OK65, OK66, OK67, OK68, OK69, OK70, OK71, OK72, OK73, OK74, OK75, OK76, OK77, OK78, OK79, OK80, OK81, OK82, OK83, OK84, OK85, OK86, OK87, OK88, OK89, OK90, OK91, OK92, OK93, OK94, OK95, OK96, OK97, OK98, OK99, OK100, OK101, OK102, OK103, OK104, OK105, OK106, OK107, OK108, OK109, OK110, OK111, OK112, OK113, OK114, OK115, OK116, OK117, OK118, OK119, OK120)
' tu potrebujem vypisat hodnoty premenných do buniek (nie premenne ale ich skutocne hodnoty)
riadok = 1
For Each xx In pole
Cells(riadok, 1).Value = xx.Value 'hodnota cize 12, 15 , 45 ........
riadok = riadok + 1
Next xx
' znulovanie
For Each xx In pole
xx = 0 'zase hodnota premennej nie obsah pola
Next xx
'vysledkom musi byt pole ktore je plne premennych ktore = 0
pole = Array(OK1, OK2, OK3, OK4, OK5, OK6, OK7, OK8, OK9, OK10, OK11, OK12, OK13, OK14, OK15, OK16, OK17, OK18, OK19, OK20, OK21, OK22, OK23, OK24, OK25, OK26, OK27, OK28, OK29, OK30, OK31, OK32, OK33, OK34, OK35, OK36, OK37, OK38, OK39, OK40, OK41, OK42, OK43, OK44, OK45, OK46, OK47, OK48, OK49, OK50, OK51, OK52, OK53, OK54, OK55, OK56, OK57, OK58, OK59, OK60, OK61, OK62, OK63, OK64, OK65, OK66, OK67, OK68, OK69, OK70, OK71, OK72, OK73, OK74, OK75, OK76, OK77, OK78, OK79, OK80, OK81, OK82, OK83, OK84, OK85, OK86, OK87, OK88, OK89, OK90, OK91, OK92, OK93, OK94, OK95, OK96, OK97, OK98, OK99, OK100, OK101, OK102, OK103, OK104, OK105, OK106, OK107, OK108, OK109, OK110, OK111, OK112, OK113, OK114, OK115, OK116, OK117, OK118, OK119, OK120)
' pricom OK1 = 0, OK2 = 0 ............................
End Sub
ahojte
mam vyse 100 premennych ktore potrebujem znulovat, najlepsie by bolo pouzit pole a cyklus, bohuzial neviem ako z pola a do pola dostat hodnotu premennej (nie samotnu premennu - to nieje problem)
pole = array(x, y, z)
potrebujem do x, y a z zapisat 0, pripadne potrebujem hodnoty x, y a z dalej pouzit v cykle tj priamo z pola.
viete mi pomoct? dakujem
trochu som sa v tom pohrabal a uz mi ide otvorit tvoj userform, po vlozeni mnov upraveneho Pokiho kodu do userform to pocita prvy riadok, pre vypocet vsetkych 22 riadkov to tam budes musiet vlozit 22x a upravit cisla textboxov, nic zlozite iba zdlhave, alebo nerozumiem problemu ? , este pozeram ze to chces do nejakeho horniho pole (tak daj scitat vsetky textboxi Celkem) , či?.....
ja reagujem iba na to ze Ti to pri scitani 12 + 34 vyjde 1234 (spoji dva textove retazce) upravil som iba Pokiho kod, tvoja priloha mi nefunguje (ako uz pisal Al)
Private Sub TextBox2_Change()
If IsNumeric(Me.TextBox2.Text) And Len(Me.TextBox2.Text) > 0 And Len(Me.TextBox3.Text) > 0 Then
Me.TextBox4.Text = CSng(Me.TextBox2.Text) + CSng(Me.TextBox3.Text)
Else
Me.TextBox4.Text = ""
End If
End Sub
Private Sub TextBox3_Change()
If IsNumeric(Me.TextBox2.Text) And Len(Me.TextBox2.Text) > 0 And Len(Me.TextBox3.Text) > 0 Then
Me.TextBox4.Text = CSng(Me.TextBox2.Text) + CSng(Me.TextBox3.Text)
Else
Me.TextBox4.Text = ""
End If
End Sub
to ma kedysi davno naucil Poki,
diky Poki a sorry ze sa Ti mixujem do kodu
skus
Dim correct_pass_given As Integer
Dim hide_sheet As Worksheet
Private Sub Workbook_Open()
heslo = Heslo123
Set hide_sheet = List1 '
List2.Select
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
heslo = "Heslo123"
Dim strPass As String
Dim lCount, number_of_tries_allowed As Long
Set hide_sheet = List1 '
number_of_tries_allowed = 3 '
'MsgBox correct_pass_given
If ActiveSheet.Name <> "List1" Or correct_pass_given = 1 Then
Else
hide_sheet.Columns.Hidden = True
'Allow 3 attempts at password
For lCount = 1 To number_of_tries_allowed
strPass = InputBox(Prompt:="Password Please", Title:="PASSWORD REQUIRED")
If strPass = vbNullString Or strPass <> heslo Then 'Cancelled
MsgBox "Password incorrect", vbCritical, "Message"
Else: correct_pass_given = 1 'Correct Password
Exit For
End If
Next lCount
If lCount = number_of_tries_allowed + 1 Then '
Exit Sub
Else 'Allow viewing
hide_sheet.Columns.Hidden = False
End If
End If
End Sub
ziadne existujuce makro som tam nenasiel, spravil som to tak ze pri spusteni sa doplni cislo do prveho stlpca, pri zatvarani sa skontroluje ci je v stlpci B nieco doplnene ak nie zmaze sa automaticky doplnene cislo, v pripade ze uzivatel nema povolene makra (co by trochu narusilo chod listu) neuvidi list1 ktory je makrom skryty.
Microsoft Office Excel 2007 - Programování ve VBA
John Walkenbach
a stranky ? myslim ze si tu spravne
super dik, inac budem sa s tym este mueiet trochu vysantit nakolko orginal data su este horsie rozlozene
ahojte
potrebujem spocitavat data v tabulke (su tam dni v mesiaci) podla aktualnych tyzdnov v aktualnom mesiaci - neviem to opisat prosim mrknite prilohu. makrom by som to dal ale neslo by to nejakym vzorcom?
dakujem
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.