< návrat zpět

MS Excel


Téma: Pozice UserForm rss

Zaslal/a 27.8.2010 7:52

Ahoj,
snažím se tu pozicovat UserForm dle mé libosti. Našel jsem spoustu návodů jak to udělat, ale všechny řeší pozici při inicializaci a né když už je UserForm zobrazený.
Př. Mám UserForm 20x20px a uživatel klikne na jedno z tlačítek, v tu chvíli se z toho vytvoří UserForm 100x100px a přibudou tam nějaký controls, ale chci, aby se to znovu vycentrovalo na střed a ne jen zvětšilo. Pomocí metody UserForm.Left a UserFrom.Top to je možné dělat pouze při inicializaci, pozdější pozicování se mi zatím nepovedlo.

Nemáte někdo nápad, nebo nečetli jste někde něco?
Děkuji za případné rady

Zaslat odpověď >

#002284
Jeza.m
Ahoj,
použil bych událost resize:
Private Sub UserForm_Resize()
UserForm1.Left = Application.Left + Application.Width / 2 - UserForm1.Width / 2
UserForm1.Top = Application.Top + Application.Height / 2 - UserForm1.Height / 2
End Sub

M@citovat
#002289
avatar
Bude to znít asi hloupě, ale neudělalo to vůbec nic 7

Zde je kod, který je zapsán na přílusšném tlačítku, které vyvolává zvětšení formuláře:

Private Sub Zoom1_Click()

Pokus1.Image1.Picture = Pokus1.Picture

Pokus1.Image1.Visible = True
Pokus1.Image1.AutoSize = True
Pokus1.Height = 600
Pokus1.Width = 800
Pokus1.Zoom1.Visible = False
Pokus1.Dalsi.Visible = False
Pokus1.Predchozi.Visible = False
Pokus1.ScrollBars = fmScrollBarsBoth
Pokus1.ScrollHeight = Pokus1.Image1.Height
Pokus1.ScrollWidth = Pokus1.Image1.Width
Pokus1.ScrollLeft = 0
Pokus1.ScrollTop = 0
Pokus1.Zpet.Visible = True

End Sub

Nevím si stím právě vůbec rady, zkusil jsem už spousta věcí, dalších knihoven, atd... Nic nepomohla. Formulář ma nastaveno v propertis: StartUpPosition na center obrazovky.citovat
#002293
Jeza.m
asi bude lepší příklad :-).
Jinak na obrazovku se pomocí VBA centruje blbě, jelikož narozdíl od VB nepodporuje objekt Screen, takže jsem šel cestou centrování na okno excelu, teď mě tak napadlo, že bych mohl nejdřív excel maximalizovat a pak to vycentrovat, čímž se dostanu na střed plachy :-), pak zas můžu excel vrátit do původní polohy :-)citovat
#002294
avatar
Já bych příklad poslal docela rád, ale je to takovej malej program s databází, provzánej na x sešítů, accesů, atd, takže když to pošlu, nebude tam vůbec nic fungovat. Druhá věc je spousta modulů a jsem lenivej dělal popisky, takže než se v tom zase vyznáš. Stačilo by mě pošťouchnout jak na to. Nejsem si totiž vůbec jist, zda UserFrom.left a .top funuje už při spuštěným UserFrom. I když tam na tvrdo nastavim třeba UserFrom.left = 1 a UserFrom.top = 1, tak to vůbec nic neudělá. Jako kdybych to tam ani nenapsal. Jsi si tedy jist, že pozicování pomocí .left a .top funguje už po nainicializovaném UserFormu?citovat
#002299
Jeza.m
Jsem si naprosto jistý že funguje.
Když nedáš příklad ty, tak dám příklad já a snad už si ho nějak přebereš :-).

M@
Příloha: zip2299_pozicovani.zip (82kB, staženo 35x)
citovat
icon #002308
admin
Něco jsem zkusil, tak to vyzkoušejte. Snad je to co jste chtěl.
Příloha: zip2308_form_resize_center.zip (13kB, staženo 39x)
citovat
#002309
avatar
Naprosto luxusně vypadající řešení :)
Jenom se zaboha nemůžu dopomoct toho, aby mi UserForm reagoval na .left a .top. Nevím, zda jsem si někde něco nenastavil, ale i když napíšu hloupe MujUserFrom.Left = 1 tak se nic nestane, prostě to na to nereaguje. Musím někde zaptrát, co by mohlo tento příkaz vyřadit z činnosti právě u mého souboru. Když jsem si otevřel nové okno a udělal obyčejný userfrom a přiřadil na tlačítko left, tak to už fungovalo.
Moc ale děkuju za opravdu moc pěkné řešení 20citovat
#002310
avatar
Vzal jsem si UserFrom, který potřebuju posouvat.
Dam na něj stupidní tlačítko, a do něj napíšu následující:

Pokus1.left = Pokus1.left +10
MsgBox Pokus1.left

Klikám na to a MsgBox vypisuje hodnotu vždy o 10 větší, ale UserFrom s názvme Pokus1 se ani nepohne 7

Začal jsem pátrat a našel jsem globální proměnou s názvem Left a Top. Program při kompilaci nezahlásil žádnou chybu ani při běhu, prostě mu to nevadí, ale v tu chvíli funkce left a top nefunguje. Po přejmenování se vše rozběhlo a plně funguje. 4citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Spustit makro v určitý čas

Baja • 28.11. 20:11

Spustit makro v určitý čas

elninoslov • 28.11. 17:09

Spustit makro v určitý čas

Baja • 28.11. 12:51

Spustit makro v určitý čas

elninoslov • 28.11. 0:31

Spustit makro v určitý čas

Baja • 27.11. 22:22

Spustit makro v určitý čas

Anonym • 27.11. 22:20

Spustit makro v určitý čas

elninoslov • 27.11. 21:11