Diskuzní fórum

VBA: předání názvu formuláře

VBA: předání názvu formuláře10.3.2009novinka

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!

reagovatZadala Rawn PUB   Předměty → Kancelářské aplikace   6 reakcí → nejnovější 13.4.2009 20:39
  • 12.3.2009 13:03:17novinka

    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 Sub

    Jak 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:48novinka

      Rawn napsala

      :

      Při této příležitosti bych ráda poznamenala, že nesnáším Texy!

      • 27.3.2009 19:03:13novinka

        michalh napsal

        :

        Syntaxe Texy

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

        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:12novinka

          Rawn napsala

          :

          Bezvadný! Díky! :) (…příště ho ale stejně vypnu…) :)

  • 1.4.2009 20:04:54novinka

    Jokinen napsal

    :

    ??""_::!/"(%0­0%!__!(°?

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.

Vyhledávání
Kalendář aneb právě dnes

Dnes je 19.května 2012
je 20. týden roku (sudý)
a svátek má Ivo.

Narozeniny dnes slaví:

Přejeme vše nejlepší!

A co dnes nabízí menza?