Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Max. 1 kruisje per rij zetten  (gelezen 2992 keer)

0 leden en 1 gast bekijken dit topic.

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Max. 1 kruisje per rij zetten
« Gepost op: 22 april 2009, 13:28:14 »
Weet iemand een methode om max. 1 kruisje per rij te zetten.

Zie voorbeeld in bijlage.

De bijlage gaat over lesvakken(modules)
Ik heb een kolom NU, OK, FAILED
Als ik een module aan het volgen ben zet ik een kruisje bij nu. Als ik reeds op een module ben geslaagd zet ik een kruisje bij OK. Als ik een tweede zit heb zet ik een kruisje bij FAILED. Dus mag  er per lijn maar 1 kruisje voorkomen. Bij een wijziging in de rij zou het dan de bedoelling zijn dat de oorspronkelijke selectie automatisch wordt gewist en dat de huidige selectie het kruisje komt te staan.

Wie weet hier een oplossing voor?

Mvg,

Diezel

OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Max. 1 kruisje per rij zetten
« Reactie #1 Gepost op: 22 april 2009, 15:17:36 »
Diezel, Je probeert een beetje om Option buttons na te bouwen? ;) Zet dit blokje  in de module van de worksheet 'Modules'...
Private Sub Worksheet_Change(ByVal Target As Range)
   
    If Not Intersect(Target, Range("G3:I41")) Is Nothing And Target.Cells.Count = 1 Then
        Application.EnableEvents = False
        Range(Cells(Target.Row, "G"), Cells(Target.Row, "I")).ClearContents
        Target.Value = "x"
        Application.EnableEvents = True
    End If
   
End Sub

Groet, Leo
______________________________

Groet, Leo

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Max. 1 kruisje per rij zetten
« Reactie #2 Gepost op: 22 april 2009, 16:05:31 »
Beste Leo,

Jou oplossing werkt perfect. Bedankt ervoor.

Ik heb jou code in een module geplaatst en in de worksheet modules roep ik ZetKruisje(ActiveCell) de functie(jou code op). Op die manier kan ik achteraf nog een reset uitvoeren om alle kruisjes binnen het bereik te
wissen.


Mvg,

Diezel
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Max. 1 kruisje per rij zetten
« Reactie #3 Gepost op: 22 april 2009, 17:34:27 »
Ehhh... Ik snap je niet helemaal, maar als 't voor jou werkt is het volledig top!  ;D

Groet, Leo
______________________________

Groet, Leo

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Max. 1 kruisje per rij zetten
« Reactie #4 Gepost op: 22 april 2009, 17:50:04 »
Beste Leo,

Het is ondertussen in orde gekomen zonder functiemodule.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Blijkbaar een ander gedrag tussen Change en selectionChange.

Het was voor het geval dat ik mij vergiste en een kruisje zette, dat er nog een mogelijkheid was om met delete te wissen. (in een situatie dat ik in werkelijkheid geen module gevolgt zou hebben)Bij change lukt dit niet.

Mvg,



Diezel
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Max. 1 kruisje per rij zetten
« Reactie #5 Gepost op: 22 april 2009, 23:01:24 »
Diezel, Ik zou 'm toch echt wel houden in het Change-event. Deze kijkt namelijk of er iets in de cel in het aangegeven bereik wordt gewijzigd. Bij SelectionChange wordt iedere verplaatsing van de actieve cel aangegrepen om de code uit te voeren.
Met een kleine toevoeging in m'n codeblokje lukt het ook om te deleten...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sTempTarget As String
   
    If Not Intersect(Target, Range("G3:I41")) Is Nothing And Target.Cells.Count = 1 Then
        sTempTarget = Target.Value
        Application.EnableEvents = False
        Range(Cells(Target.Row, "G"), Cells(Target.Row, "I")).ClearContents
        Target.Value = sTempTarget
        Application.EnableEvents = True
    End If
   
End Sub
Uiteraard wel in de sheet-module van de betreffende worksheet!

Groet, Leo
______________________________

Groet, Leo

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Max. 1 kruisje per rij zetten
« Reactie #6 Gepost op: 22 april 2009, 23:36:45 »
Leo,

Dat ziet er goed uit. Goed dat je mij uitleg geeft in het verschil change en selection change. Nogmaals bedankt.

Mvg,

Diezel
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

 


www.combell.com