VBA (Excel)
Zdravím všechny!
Potřebovala bych poradit s předáváním názvu formuláře mezi procedurami, tak abych ho mohla požít jako součást cesty k objektu...
Potřebuju to vědět z důvodu využívání společné procedury (v modulu), která se ovšem zasazuje do různých formulářů.
Takže ve formuláři po kliknutí na tlačítko "T", kód v "T_Click" odkáže na proceduru "Telefony", která je společná pro více formulářů. Od formuláře chci, aby modulu předal svůj název (název formuláře), aby modul mohl identifikovat objekt (v mém případě TextBox) a v případě, že je prázdný, vypsat hlášku. To samé by měl udělat jakýkoli jiný formulář, kde je odkaz proceduru "Telefony" v modulu.
Ve formuláři "F_zakaznik":
Private Sub T_Click()
Dim cesta As String
cesta = "F_zakaznik"
Telefony (cesta)
End Sub
V modulu:
Sub Telefony(cesta)
If cesta.Telefon.Value = "" Then
MsgBox("Vyplň to, lajdáku!")
End If
End Sub
... takhle to, samozřejmě, nefunguje, protože "cesta" je typu String. Ale zkoušela jsem použít i typ Object, ale nepodařilo se mi takovou proměnnou převést z jedné procedury do druhé:
Ve formuláři "F_zakaznik":
Private Sub T_Click()
Dim cesta As Object
Set cesta = F_zakaznik
Telefony (cesta)
End Sub
V modulu:
Sub Telefony(cesta)
If cesta.Telefon.Value = "" Then
MsgBox("Vyplň to, lajdáku!")
End If
End Sub
... když jsem nadefinovala proměnnou "cesta" přímo v modulu, tak to bylo bez problému (If proběhlo, za cestu se dosadilo "F_zakaznik"), ale jakmile se pokusím naplnit proměnnou už ve formuláři, nahlásí mi to error: "Object does not support this property or method."
Stringy mi jdou přenášet v pohodě, takže by možná stačilo ve formuláři nadefinovat String, kam by se uložilo: "F_zakaznik" a v modulu potom Object, kam by se uložila objektová podoba Stringu (to však vyžaduje příkaz nebo funkci na převod Stringu na Object - je nějaká taková?).
Někde dělám nějakou banální chybu. Zkuste ji, prosím, někdo najít nebo navrhnout nějaké jiné efektivnější řešení. Díky za pomoc!
Příspěvky odeslané z IP adresy 147.229.94.–
anonym