Excel - VBA

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Odpovědět
Pavel123
Level 1
Level 1
Příspěvky: 91
Registrován: 09 pro 2006 12:02

Excel - VBA

Příspěvek od Pavel123 »

Dobrý den,
nevíte někdo jak vnutit excelu stringovou proměnou jako název objektu?
Něco jako tohle nefunguje

DIM strNazevObjektu As String
DIM obj As object

strNazevObjectu = Range("A1").Value

Set obj = strNazevObjectu

Nefunguje to ani s proměnou typu variant
Dík za radu
Pavel
Uživatelský avatar
Ltb
Administrátor
Příspěvky: 6789
Registrován: 28 úno 2003 23:53
Bydliště: Praha západ
Kontaktovat uživatele:

Příspěvek od Ltb »

Ahoj, ve VBA dělám spíše základní úkony, ale...tvůj kód mi připadá zvláštní. Přiřazuješ objektu hodnotu string. Myslím si, že by to mohlo jít přes vlastnosti objektu. Pokud lze změnit jméno objektu, půjde to přes vlastnosti (properties). Bohužel, víc toho o objektech ve VBA nevím.

Namísto Set obj = strNazevObjectu bych použil něco jako SetName(obj) = strNazevObjectu
Pavetta
nováček
Příspěvky: 33
Registrován: 04 srp 2006 16:10

Příspěvek od Pavetta »

Záleží na tom, o jaký typ objektu jde. jestli je to fakt jen Object. U většiny objektů ve VBA přiřazuješ nějakým takovým způsobem obj.Name=string. Záleží na properties každého typu objektu.
Pavel123
Level 1
Level 1
Příspěvky: 91
Registrován: 09 pro 2006 12:02

Příspěvek od Pavel123 »

No, jde mi o to, že nechci objektu přiřadit hodnotu string ale objekt
jehož název je v promené string. Mám např. 10 textboxů a kód má
pracovat s textboxem jehož name je v bunce A1. Zatím to řeším

Select Case Range("A1").Value
Case "txbOkno1"
set obj = txbOkno1
Case "txbOkno2"
set obj = txbOkno2

ale je to dost nepohodlné
Pavetta
nováček
Příspěvky: 33
Registrován: 04 srp 2006 16:10

Příspěvek od Pavetta »

Jo, mám to. U textboxu se to dá takhle:

Dim txb As Control
Set txb = UserForm1.Controls("jméno, nebo string z buňky")
Pavetta
nováček
Příspěvky: 33
Registrován: 04 srp 2006 16:10

Příspěvek od Pavetta »

Ještě to upřesním

Dim txb As Control
Set txb = UserForm1.Controls("jméno, nebo string z buňky")

Ten userform1 je můj pracovní formulář, ty si tam zadej ten, co máš.

Dim txb As Control
Set txb = UserForm1.Controls(Range("A1"))

Bacha ale na velká a malá písmena. Fungovalo mě to jako case sensitive.
Pavel123
Level 1
Level 1
Příspěvky: 91
Registrován: 09 pro 2006 12:02

Příspěvek od Pavel123 »

Díky za radu a nápad akorát mi to nefunguje jako Control
udělal jsem to takhle:
Dim txb As Object
Set txb = ActiveSheet.OLEObjects(Range("A1").Value).Object
Pavel
Odpovědět

Zpět na „Programování a tvorba webu“