Typ proměnné   otázka

VB6/VBA

Ahoj!

Chci se zeptat pro Vás možná na úplnou hloupost,ale neumím s tím pohnout.Jak deklarovat proměnnou pro název prvku Label.Je to Pro VBA Excel.Snad jsem to popsal srozumitelně.

Díky


Dim prvek As ???

prvek = Label60.Name

With prvek
.BackColor = &HFFFF00
.Height = 27
.Width = 48
.Font.Size = 14
.Top = 5
End With

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jestli tomu dobře rozumím, chcete prvku Label60 dosadit dané vlastnosti? Pokud ano, použijte Label60 jako samostatný výraz v konstrukci With:

With Label60
  .BackColor = &HFFFF00
  .Height = 27
  .Width = 48
  ' etc.
End With

Co děláte Vy výše je dosazení textového řetězce (string), který získáte ze jména prvku (tzn. "Label60" jakožto Name prvku Label60) do proměnné a pak se snažíte té proměnné (typu string) nastavovat vlastnosti, které má prvek Label. Nepředáváte referenci na prvek uživatelského rozhraní, ale na textový řetězec. Což nejspíše nechcete, ale v každém případě místo "???" by bylo "String".

Informace nemusí být korektní, s Visual Basic for Application jsem nikdy pořádně nepracoval, ale popisujete celkem obecnou věc, takže by mé řešení mohlo být ku prospěchu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No právě,že typ String nefunguje a hlásí chybu!

Jde mi o to,že tu proměnnou "prvek" chci používat i v jiných procedurách,zatím mi to nejde ani v té jedné.

Private Sub Label60_Click()
Dim prvek As String ???

prvek = Label60.Name
With prvek
.BackColor = &HFFFF00
.Height = 27
.Width = 48
.Font.Size = 14
.Top = 5
End With
End sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Napsal jsem "bylo by", protože jsem mluvil o scénáři, který Vy na mysli nemáte. Ve Vašem případě nechcete ukládat string, ale samotnou referenci na prvek uživatelského rozhraní, takže místo "???" bude Label a přiřazení nebude vůbec sahat na vlastnosti Name:

Dim prvek As Label
prvek = Label60 ' Vrací referenci na Label
' Nikoliv:
prvek = Label60.Name ' Vrací String

Nyní kdykoliv změníte vlastnost objektu v proměnné prvek, změní se ta samá vlastnost na Label60. Ve všech procedurách, kde prvek použijete.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak už je to vyřešeno...

Dim prvek1 as Object

Set prvek1 = Label60

 With prvek1
.BackColor = &HFFFF00
.Height = 27
.Width = 48
.Font.Size = 14
.Top = 5
End With

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback