Excel - VBA Vyřešeno

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

Pavel123
Level 1
Level 1
Příspěvky: 91
Registrován: prosinec 06
Pohlaví: Nespecifikováno
Stav:
Offline

Excel - VBA  Vyřešeno

Příspěvekod Pavel123 » 29 pro 2006 19:59

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

Reklama
Uživatelský avatar
Ltb
Administrátor
Master Level 8.5
Master Level 8.5
Příspěvky: 6755
Registrován: únor 03
Bydliště: Praha západ
Pohlaví: Muž
Stav:
Offline
Kontakt:

Příspěvekod Ltb » 29 pro 2006 21:11

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: srpen 06
Pohlaví: Nespecifikováno
Stav:
Offline

Příspěvekod Pavetta » 30 pro 2006 01:09

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: prosinec 06
Pohlaví: Nespecifikováno
Stav:
Offline

Příspěvekod Pavel123 » 30 pro 2006 05:32

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: srpen 06
Pohlaví: Nespecifikováno
Stav:
Offline

Příspěvekod Pavetta » 31 pro 2006 11:32

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: srpen 06
Pohlaví: Nespecifikováno
Stav:
Offline

Příspěvekod Pavetta » 31 pro 2006 13:30

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: prosinec 06
Pohlaví: Nespecifikováno
Stav:
Offline

Příspěvekod Pavel123 » 01 led 2007 15:25

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


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Excel a OneDrive
    od sginfo » 11 zář 2023 15:28 » v Kancelářské balíky
    16
    5988
    od mirekol Zobrazit poslední příspěvek
    20 říj 2023 08:31
  • Excel - vlastní formát Příloha(y)
    od Story-Long » 11 srp 2023 14:50 » v Kancelářské balíky
    3
    1839
    od Story-Long Zobrazit poslední příspěvek
    14 srp 2023 10:11
  • excel-posun makra
    od actionboy » 12 bře 2024 18:59 » v Kancelářské balíky
    1
    262
    od Grimm Zobrazit poslední příspěvek
    12 bře 2024 21:43
  • Excel - problém se vzorci
    od honzzicek » 28 čer 2023 21:45 » v Kancelářské balíky
    2
    1637
    od honzzicek Zobrazit poslední příspěvek
    01 črc 2023 08:57
  • Excel - funkce když
    od Martyn20 » 13 črc 2023 11:56 » v Kancelářské balíky
    5
    2320
    od mmmartin Zobrazit poslední příspěvek
    13 črc 2023 18:44

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti