• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

tablad veranderen box

  • Onderwerp starter Onderwerp starter vio
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

vio

Gebruiker
Lid geworden
18 jul 2007
Berichten
125
beste,
Weet iemand of het mogelijk is om in een excell blad een text box te laten verschijnen als je naar een ander tabblad gaat of als je afsluit met de melding "heb je rij 1 ingevuld?"
Vio
 
Als die rij 1 zich (bv.) in blad1 bevindt, klik dan met de rechtermuisknop op de tab van blad2, kies 'Programmacode weergeven'en plaats in het rechtervenster deze tekst:
Code:
Private Sub Worksheet_Activate()
MsgBox ("Heb je rij 1 ingevuld?")
End Sub
Doe hetzelfde met de andere tabbladen, maar niet met blad1.
 
Persoonlijk zou ik eerder werken met het DeActivate-event ipv het Activate-event. Je wilt namelijk op het blad dat je verlaat testen of er iets wel of niet gedaan is. Vervolgens moet je zo'n zelfde proceduren óók niet x keer op ieder blad gaan herhalen als je deze in de ThisWorkbook-module kan oppakken. Hierbij dus mijn versie van oplossen...
Code:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)

    Application.EnableEvents = False
    
    If WorksheetFunction.Count(Sh.Rows(1)) = 0 Then
        MsgBox "Je hebt op blad: " & Sh.Name & ", regel 1 niet ingevuld...", vbOKOnly, "Missing input"
        Sh.Select
    End If

    Application.EnableEvents = True

End Sub
Deze code staat je niet toe om het blad te verlaten voordat je iets in regel 1 hebt ingevoerd. Het is maar als voorbeeld, maar je kan er natuurlijk vele kanten mee uit.

Groet, Leo
 
Ginger,
Deze code zou goed werken,MAAR het is de bedoeling om:
In een werkbook met 10 tbbladen deze code te gebruiken.
In kolom A zou telkens een nummer ingevuld moeten worden(het maakt niet uit welk tbblad). Telkens als men op dit tabblad iets genoteerd heeft. Heeft men er geen nummer gezet bij het noteren en men wil naar een ander tabblad gaan dan moet de box verschijnen van: "Je hebt Kolom A niet ingevuld op vorig blad."

Als men afsluit zou er ook zo een melding moeten komen.

Ik vraag mss veel maar met die specialisten van tegenwoordig:)
 
Vio,
In een werkbook met 10 tbbladen deze code te gebruiken
Da's dus met de deze code géén probleem. Die werkt voor iedere sheet in je workbook.

In kolom A zou telkens een nummer ingevuld moeten worden
Ehhhh... in je eerste vraag had je het over de 1e regel, en nu over kolom A???? Kan je specifieker zijn over het invullen? Gaat het over 1 cel in die kolom of regel?

Heeft men er geen nummer gezet bij het noteren en men wil naar een ander tabblad gaan dan moet de box verschijnen van: "Je hebt Kolom A niet ingevuld op vorig blad."
Dat wordt met mijn code ondervangen...

Als men afsluit zou er ook zo een melding moeten komen
Da's geen probleem! Maar laten we eerst proberen om het 1e deel goed te krijgen.

Groet, Leo
 
Leo,
Om concreet te zijn zou ik iets meer moeten uitleggen.
In Kolom B staat de datum per rij (vb. B1= 23/6; B2= 24/6)
In kolom A zou er een nummer genoteerd moeten worden(A1=3; B1= 23/6 )
Als die nummer 3 niet gezet wordt dan werkt mijn filter niet, met de bedoeling al de 3 bij elkaar te zetten. Dus zou er een venster moeten komen die de gebruiker terug fluit om alsnog dat nummer in te vullen.
Met dank
Vio
 
Vio, Ik zit nu toch nog weer met vragen. Zou je daarom een voorbeeld workbook kunnen maken? Laat dan een book zien zoals het er na enige tijd uit zou zien. Dat maakt het verzinnen van een passende oplossing eenvoudiger voor de helpers. Je kan natuurlijk ook je reeds aanwezige workbook (ontdaan van gevoelige info) hier plaatsen.

Groet, Leo
 
Vio, Kijk... daar was ik al bang voor! Op welke manier weet je of de cel in kolom A ingevuld moet zijn? Je laat namelijk invullen in een niet aaneengesloten serie regels (want ik ga er vanuit dat er niet iedere dag een doelstelling gehaald wordt). Dit betekent dat een gebruiker iets invult bij bijvoorbeeld (regel 8) datum 03/08/07 (zowel cel C8 als A8). Vervolgens wordt er enkele dagen later weer een doelstelling gehaald, zeg op 10/08/07 (ook hier worden netjes kolom A en C ingevuld). Nou was er een collega een dagje vrij en was vergeten om ook nog zijn/haar melding in te vullen. Dit was een doelstelling van 06/08/07. Dit komt dus TUSSEN de 2 reeds aanwezige regels. Er kan dus niet meer worden getest door te zoeken naar de laatste regels in kolom A en C.

Ik weet nu maar 1 oplossing, maar die is zeker niet waterdicht. Dat is het tellen van het aantal gevulde cellen in kolom A en C. Als deze ongelijk zijn, ontbreekt er dus in 1 van de 2 kolommen iets aan gegevens....

Groet, Leo

P.s. Ik ga dat vanavond niet meer redden om te maken. Als anderen nog actief zijn 'be my guest', anders morgen verder.


EDIT: Voor de volledigheid.... Het ging om het bestandje uit deze reactie.
 
Laatst bewerkt:
Leo,
Zou het mogelijk zijn zoals je al zegt: Als kolom C wordt ingevuld en kolom A niet op de huidige datum() dat er dan de foutmelding gegeven wordt, als je naar een ander tabblad gaat of afsluit. Maar voor alle duidelijkheid A moet steeds ingevuld worden met 1,2,3 of d
ALS in kolom C iets wordt ingevuld (wel op de rij van de huidige datum)
Ik hoop dat je eraan uit kunt:confused:

Ottavio
 
Vio, ik ben je niet vergeten. Mijn vrouw had een avondje de pc nodig, dus vandaar nog geen reactie. Het komt er nu ook niet meer van gezien het tijdstip, en helaas voor jou ben ik de komende dagen afwezig.
Voor wat betreft je vraag. Ja hoor, die controle is ook wel mogelijk. Als niemand anders dit oppakt, zal ik volgende week nog wat inspanning voor je verrichten.

Groet, Leo
 
Kun je het AUB nog eens bekijken Leon

Is er een oplossing voor deze vraag Leon.
Vio
 
Vio, Oeps, ik ben je helemaal vergeten... Ik zal vanavond nog naar je vraag kijken.

Groet, Leo (zonder n:D)
 
Fijn om te weten dat je er nog een oplossing voor gaat zoeken.
Grtjs Vio
 
...ben er nog niet uit, maar KOMT goed!:)
 
Leo

Hoi,
Heb je nog eens aan de formule kunnen werken?
Vio
 
Beste Vio,
Volgende code vergelijkt het aantal lege cellen in Bereik A met Bereik C. Indien de resultaten ongelijk zijn krijg je een bericht op het scherm.
Misschien ben je hier iets mee vooruit.

Code:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)

    Application.EnableEvents = False

    Set A = Worksheets("E-L").Range("A8:A500")
    Set C = Worksheets("E-L").Range("C8:C500")
     If Application.WorksheetFunction.CountBlank(A) <> Application.WorksheetFunction.CountBlank(C) Then
        MsgBox "U bent ergens in kolom A of kolom C een cel vergeten in te vullen", vbOKOnly, "Ontbrekende waarde"
    Sh.Select
    End If
    
    Application.EnableEvents = True
    
End Sub

Mvg

Rudi
 
Laatst bewerkt:
@Warme bakkertje, DAT was inderdaad wat ik in gedachten had...:thumb:

@Vio, Sorry voor mijn afwezigheid inzake je vraag. Ik had de afgelopen weken alleen ff tijd om wat kleine probleempjes aan te pakken. Maar vandaag is m'n vakantie (2 weken) begonnen, dus kon ik deze weer oppakken.
Ik heb diverse aanpassingen in je sheet gemaakt. Doe jezelf een lol en geef je knoppen DUIDELIJKE namen of voeg op z'n minst commentaar toe aan het codeblokje zodat je later (of een ander) nog weet waar het om gaat.;) De aanpassingsomschrijvingen heb ik in sheet 'nog andere tabbladen' gezet.
Om te te testen of alle cellen gevuld zijn in blad E-L heb ik deze code bedacht.
Code:
Private Sub Worksheet_Deactivate()
Dim arrKolomA As Variant, arrKolomC As Variant
Dim sLeegAdres As String
Dim i As Integer

    
    Set arrKolomA = Range("A8:A2000")
    Set arrKolomC = Range("C8:C2000")
    
    For i = 1 To 2000
        If --IsEmpty(arrKolomA(i)) + --IsEmpty(arrKolomC(i)) = -1 Then '1 van de 2 is niet gevuld
            If IsEmpty(arrKolomA(i)) Then
                sLeegAdres = arrKolomA(i).Address(False, False)
            Else
                sLeegAdres = arrKolomC(i).Address(False, False)
            End If
            
            Sheets("E-L").Select
            
            Application.ScreenUpdating = False
            
            ActiveWindow.ScrollRow = arrKolomA(i).Row
            Application.ScreenUpdating = True
            
            Range(sLeegAdres).Select
            MsgBox "Cel   " & sLeegAdres & "   is nog niet gevuld! Aub éérst vullen!", vbOK, "Invoerfout"
                
            Exit Sub
        End If
    Next

End Sub
Maar om het je makkeljk te maken, staat het óók in de bijlage...:D
De routine werkt met 2 Arrays die in een lus tegenover elkaar worden gezet. Als 1 van de 2 leeg is, zal de uitkomst van die vergelijking -1 zijn. Op dat moment ga je de volgende if in om uit te vragen om welke cel het ging. Je wordt teruggezet naar het werkblad en de juiste cel om in te vullen wordt geselecteerd.

Kijk maar of dit is wat je voor ogen had (of die van helper Warme Bakkertje natuurlijk).

Groet, Leo
 

Bijlagen

Laatst bewerkt:
@Leo
Allereerst een prettig verlof toegewenst. Anderzijds heb je weer een mooi stukje code in elkaar gebokst. Uiteraard zou ik voor jouw oplossing kiezen aangezien je dan niet meer moet uitzoeken waar de lege cel zich bevindt. :thumb:
Nog 1 klein vraagje: de bedoeling van de dubbele streepjes voor IsEmpty?

Mvg

Rudi
 
Laatst bewerkt:
Warme Bakkertje zei:
Allereerst een prettig verlof toegewenst
Mijn dank! Hoewel ik niet weet waar ik het rustiger heb... Op mijn werk of nu met de verplichte klussen van mijn vrouw (schilderen e.d.)...:D:D:D Over een paar weekjes ben ik weer 2 weken vrij, maar dan ECHT!

Nog 1 klein vraagje: de bedoeling van de dubbele streepjes voor IsEmpty?
Die zet een TRUE en FALSE om naar een integer. Dit trucje kan je ook in je worksheet gebruiken. In VBA is TRUE '-1' en FALSE 0. In de sheet is TRUE 1 en FALSE ook weer 0.
Speel hier maar 'ns mee. In cel B1 zet je deze formule (zorg ervoor dat A1 leeg is!)
Code:
=(A1="")
dan zie je TRUE (of WAAR)
Met...
Code:
=--(A1="")
zie je 1

Groet, Leo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan