Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  71 72 73 74 75 76 77 78 79   další » ... 84

co takhle?

ahoj,
par odpovedi:

Combobox - ve vlatnostech zmen Style na 2 - fmStylDropDownList

Userform - do modulu userformu vloz kod:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox "Tohle zavírání je křížkem", vbInformation, "Info"
Cancel = True
End If
End Sub


TextBox - ve stringu bych cisla psat ponechal a u Integru muzes otestovat hodnodu funkci IsNumeric()

Range - lze to zapsat takto: Range(cells(i,j),cells(k,l)) kde muzes za i,j,k,l dosadit promenne nebo pouzit treba cyklus...

Podivat se na to muzu, ale jde to dost tezko bez moznosti otestovani, takze bych fakt potreboval ten soubor, kde je formular a seznam pro ulozeni dat...

No tak jenom kod neni moc idealni, ale prijde mi, ze tam kontrolu na existujici ICO uz mas (aspon teda na poseldnim zapsanym zaznamu - da se zkontrolovat vse pomoci cyklu...)
Co teda vlasnte potrebujes?

Co takhle?

Zdravim,
Workbook_Open nemuze byt v modulu listu, proto to nefunguje.
List má Worksheet_Activate, coz ma zase problem v tom, ze spusti jen pri aktivaci listu (pri otevreni muze byt aktivni, ale neni aktivovan, takze se procedura nepusti).
Potřeboval bych videt, jak to cely funguje... zkus prihodit ukazku, podivam se na to

Ahoj,
priloz ukazku - podivam se na to...

Zdravim,
kdybys prilozil ukazku, podival bych se na to...

Seznam nemusis nikde shanet, je primo ve VBE (Visual Basic Editor).
Kdyz ses v modulu listu (nebo sesitu ThisWorkbook), tak jsou nahore 2 comboboxy, kde v levym vyberes Worksheet (resp. Workbook) a v pravym uz mas seznam tech "spoustecu" - staci vybrat a VBE ti rovnou do modulu hodi nazev)

Tohle je slozitejsi udalostni procedura.

Na rozdíl od _Change se _Calculate spousti vzdy kdyz dojde k prepocitani listu - tedy, pouziva se tam, kdy potrebujes spustit makro v pripade, ze se zmeni bunka prostrednictvim prepoctu vzorce. Bohuzel vsak dojde ke spusteni vzdy, kdyz se list prepocita (dojde ke zmene vysledne hodnoty ve vzorci), tedy i v pripade, ze tam mas nekde na listu vzorec =DNES nebo =NÁHČÍSLO (nebo i další)

Udalostni procedura _Change se naproti tomu spusti pouze, kdyz do nejake bunky zadas jinou hodnotu, nez kterou obsahovala a stiknes ENTER (nebo prejdes na jinou bunku)

Presne tak, pri kazde zmene na tom konrektnim listu bude P4 = 1 a B2 = 5 nebo 8.

Ostatni makra nebudou spustena.
Predstav si tyhle udalostni procedury treba tak, ze jsou prirazeny tlacitku, ktery se automaticky spusti vzdy, kdyz nastane udalost, kterou postihuji.

Vzdy ale bude provedena jen ta konkretni procedura.
Samozrejme do ni muzes vlozit spusteni jineho makra, prikazem Call Nazev_makra

No, tady ta '_Change' procedura musi byt umistena v modulu konkr. listu a VBA vi, ze kdyz tam je, tak pri KAZDY zmene JAKYKOLIV bunky (nebo oblasti) ji musi provest!
VBA nespusti pri zmene bunky vsechny makra - vzdy jen Private Sub Worksheet_Change(ByVal Target As Range).

Pouziva se to, kdyz chces treba spustit makro v pripade, ze se zmeni napr. bunka A1 - pak v te procedure napises:
if target.address = "$A$1" then msgbox "zpráva"
Pokud se tedy stane zmena v jine bunce nez A1, tak se zdanlive nestane nic, ale VBA overi podminku If

Tohle je udalostni procedura listu - je implementovana ve VBA.
Spusti se vzdy, kdyz dojde ke zmene v nejake bunce na konkretnim listu, kde se procedura nachazi.
Target je potom bunka, kde doslo ke zmene.

Tahle procedura (stejne jako ostatni udalostni procedury listu nebo nebo sesitu) muze byt vzdy jen JEDNA (na tom konkretnim listu nebo sesitu).

Nic se tam nenastavuje, protoze vse je definovano primo ve VBA.

On error resume next pouze zamezi tomu, aby se beh makra ukoncil pri chybe - 'při chybě pokračuj na další řádek'.
Na tom dalším řádku (podminka If) se pak provede test čísla chyby...
Pokud chyba nenastane, makro pokracuje vesele dal :)

Jestli to dobre chapu, tak hledana hodnota neni v zadane oblasti - pak lze použít napr. toto:

On Error Resume Next
promenna = Application.WorksheetFunction.Match(Cells(4, 16), Stredisko, 0)
If Err.Number = 1004 Then
MsgBox "Chyba - hledaná hodnota se v oblasti nenachází"
exit sub
end if


Strana:  1 ... « předchozí  71 72 73 74 75 76 77 78 79   další » ... 84

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