Diskuzní fórum
VBA: předání názvu formuláře
- VBA: předání názvu formuláře10.3.2009

-
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 SubV 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 SubV 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!
reagovatZadala Rawn PUB Předměty → Kancelářské aplikace 6 reakcí → nejnovější 13.4.2009 20:39
-
12.3.2009 13:03:17


Rawn napsala
:
Už vyřešeno! :D
V modulu:
Public cesta As Object
Ve formuláři F_zakaznik:
Set cesta = F_zakaznik Telefony
V modulu:
Sub Telefony()
If cesta.Telefon.Value = "" Then
MsgBox(„Vyplň to, lajdáku!“)
End If End SubJak jsem řekla: BANÁLNÍ CHYBA! :D
Všem přeju, aby měli alespoň o neuron větší IQ než já!-
12.3.2009 13:03:48


Rawn napsala
:
Při této příležitosti bych ráda poznamenala, že nesnáším Texy!
-
27.3.2009 19:03:13


michalh napsal
:
Texy se dá samozřejmě **vypnout** pomocí značek /---text a \--- -
27.3.2009 19:03:10


michalh napsal
:
Neodolal jsem a trochu tvůj příspěvek pomocí Texy naformátoval. Doufám, že se čitelnost zlepšila. Pokud bude zájem, můžeme časem přidat i obarvování kodu.
-
13.4.2009 20:04:12


Rawn napsala
:
Bezvadný! Díky! :) (…příště ho ale stejně vypnu…) :)
-
13.4.2009 20:04:12
-
27.3.2009 19:03:13
-
12.3.2009 13:03:48
-
1.4.2009 20:04:54


Jokinen napsal
:
??""_::!/"(%00%!__!(°?
Jste u konce - nyní můžete reagovat na konkrétní příspěvek kliknutím na odkaz "reagovat" nacházející se na konci příslušné odpovědi nebo můžete reagovat na hlavní téma diskuze.