[VBA] Form openen en toch klikken op excelsheet?

Pagina: 1
Acties:
  • 418 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil onder Excel met VBA het volgende voor elkaar krijgen:

Ik heb een form met wat code eronder. Als ik op een knop op dit form druk is het de bedoeling dat je in het excel document een een rij kan selecteren. Na het selecteren van de rij in het excel document moet de code weer verder gaan met zn ding te doen.

Dit lukt me echter niet omdat de focus altijd op het form blijft staan en ik nooit in het achterliggende excelsheet kan klikken. Ik heb geprobeerd het form te hiden, maar dan stopt ie er gewoon helemaal mee. Dingen als het form hiden en een msgbox laten zien lukken me ook niet omdat de focus dan op de msgbox staat.

Het enige dat wel werkt is een knop op een werkbalk toevoegen die de form weer laat zien. Dus dat je het form hide, je rij selecteert in excel, en dan met die knop op de werkbalk het form weer laat zien. Maar ik wil het eigenlijk zonder knoppen/werkbalken hebben... Het mooiste zou zijn als je een soort OnClick event op het sheet zou hebben die na het klikken het form weer zichtbaar maakt en weer doorgaat.

Iemand misschien enig idee hoe je dit voor elkaar krijgt?

Het betreft hier trouwens wel Office 97... Dat draait men hier nu eenmaal...

[ Voor 6% gewijzigd door Verwijderd op 23-03-2007 16:00 ]


Acties:
  • 0 Henk 'm!

  • Sleepie
  • Registratie: Maart 2001
  • Laatst online: 11-08 15:48
Als ik je vraag goed begrijp zou dit wel eens kunnen werken.
Visual Basic:
1
UserForm1.Show (0)

[ Voor 45% gewijzigd door Sleepie op 23-03-2007 16:04 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik krijg hier een compileerfout als ik dat probeer... Ik doe het wel in VBA overigens niet in VB, wellicht dat dat het probleem/verschil is?

code:
1
2
3
4
Sub Start_TestData()
    Load frmTestData
    frmTestData.Show (0)
End Sub


Zonder de (0) werkt het wel gewoon, maar wel met het "focusprobleem" waar ik het in de beginpost over heb.

[ Voor 14% gewijzigd door Verwijderd op 23-03-2007 16:12 ]


Acties:
  • 0 Henk 'm!

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Probeer es zonder haken, dus:
Visual Basic:
1
2
3
4
Sub Start_TestData()
    Load frmTestData
    frmTestData.Show 0
End Sub

dan is de compileerfout waarschijnlijk weg. Of het dan doet wat je wilt weet ik zo niet.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Acties:
  • 0 Henk 'm!

  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 22:26
en die andere userform.hide

you had me at EHLO


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nope zonder haken werkt het ook niet. Uit de help maak ik ook op dat ik bij form.show geen parameters op kan geven.
Syntaxis

[object.]Show

Het optionele object is een objectexpressie die de waarde van een object krijgt in de lijst Van toepassing op. Indien object is weggelaten, wordt de UserForm die met de actieve UserForm-
module samenhangt, beschouwd als object.
Ook staat in de help dat userforms altijd modal zijn:
Een UserForm is altijd modaal; daarom moet de gebruiker eerst reageren voordat hij enig ander onderdeel van de toepassing gebruikt. Er wordt geen volgend deel van de programmacode uitgevoerd totdat de UserForm verborgen of uit het geheugen verwijderd is.
Wil ik dus kunnen klikken in mn excel document dan MOET ik het form hiden als ik het goed begrijp. Alleen kan ik geen form.show meer doen als het form hidden is, tenzij ik dus ergens een knop neerzet wat ik niet wil... En ik heb geen idee hoe (en of) ik bv een OnClick event van het worksheet kan gebruiken om het form weer te laten zien.

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Office 97 excel userforms zijn altijd modaal idd. Vanaf 2000 ev heb je de keuze. De beste optie is dus upgraden :)
Een workaround zou kunnen zijn een globale variabele die gezet wordt bij het initialiseren van het form en weer op nul wordt gezet bij terminate.

Als het alleen om klikken gaat kun je het worksheet_selectionchange event (of desnoods het before right/dubbelclick) gebruiken om te controleren of het formulier open stond om het weer te voorschijn te halen...

offtopic:
en voor excel / vba is er het OFF forum

[ Voor 3% gewijzigd door Lustucru op 23-03-2007 19:06 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11-08 18:05

Janoz

Moderator Devschuur®

!litemod

Zie offtopic van Lustucru. VBA en excel vragen horen in OFF

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1