• 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.

Formulier als pop-up op bepaalde datum en tijd

Status
Niet open voor verdere reacties.

adile

Gebruiker
Lid geworden
2 mrt 2014
Berichten
202
Goedenavond,

ik heb een bestandje toegevoegd, waarin dagelijks op bepaalde tijdstippen een aantal van personen en bezoekers ingevuld moet worden.
nu heb ik daarvoor een formulier gemaakt in VBA.

nu wil ik dat dit formulier op het formulier als pop-up naar boven komt om het tijdstip dat er iets ingevuld dient te worden.

Is dit mogelijk in excel?

Bij voorbaat dank,

Gr Adile
 

Bijlagen

Hoi,
Hierbij aangepast vb
Uw invulformulier gaat nu open om 07.00, 09.00 etc
Laat maar weten als het dat is wat je zoekt?
Greetz
 

Bijlagen

gast0660,

Allereerst bedankt voor je hulp.

Volgens mij is het wel wat ik zoek, alleen ik krijg als ik het bestand open direct een foutmelding.


tevens wil ik je vragen of jij weet hoe ik de code voor het invoeren moet herschrijven zodat ook de informatie steeds een kolom verschuift.

deze heb ik tot nu toe.
Code:
Dim iRow As Long
Dim ws As Worksheet
Set ws = ActiveSheet

'find first empty row in database
iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1

'check for a Name number
If Trim(Me.CMBAantalP.Value) = "" Then
Me.CMBAantalP.SetFocus
MsgBox "Please complete the form"
Exit Sub
End If

'copy the data to the database

ws.Cells(iRow, 3).Value = Me.CMBAantalP.Value
ws.Cells(iRow, 4).Value = Me.CmbAantalB.Value


MsgBox "Data added", vbOKOnly + vbInformation, "Data Added"
'clear the data

    Me.CMBAantalP.Value = ""
    Me.CmbAantalB.Value = ""
    Me.CMBAantalP.SetFocus

gr Adil
 
Hoi Adile,
Wat is juist de foutmelding?
En heb je een compleet bestandje (zonder gevoelige informatie)
Ik heb wel wat vbtjes in voorraad om een form in te vullen
(desnoods even mailen,klik op dotchie)
greetz
 
goedenavond,

ik ga hier maar verder met de vraag aangezien ik geen reactie meer krijg van gast0660.
In ieder geval bedankt voor je hulp tot nu toe, want daar kan ik wel wat mee.

Ik heb de onderstaande code gehad van gast0660, deze werkt en opent op de aangegeven tijdstippen het formulier waarin ik de tijden invul.
Alleen wanneer ik het formulier niet binnen de tijd dat het volgende formulier opkomt afsluit, dan krijg ik een error melding.

is dit te verhelpen door de formulieren beiden te openen of in een soort wachtrij?
alvast bedankt

Code:
Private Sub Workbook_Open()

Application.OnTime TimeValue("07:00:00"), "dotchie"
Application.OnTime TimeValue("09:00:00"), "dotchie"
Application.OnTime TimeValue("11:00:00"), "dotchie"
Application.OnTime TimeValue("13:00:00"), "dotchie"
Application.OnTime TimeValue("15:00:00"), "dotchie"
Application.OnTime TimeValue("17:00:00"), "dotchie"
Application.OnTime TimeValue("18:00:00"), "dotchie"
Application.OnTime TimeValue("18:30:00"), "dotchie"
Application.OnTime TimeValue("19:00:00"), "dotchie"
Application.OnTime TimeValue("21:00:00"), "dotchie"
Application.OnTime TimeValue("23:00:00"), "dotchie"

End Sub

en voor mijn andere vraag die ik dotchie stelde zal ik een nieuwe topic maken.

Gr Adile
 
Adile,

Zet de eigenschap van de formulieren eens op - ShowModal = False - en test het dan nog eens.
 

Bijlagen

Laatst bewerkt:
Beste ExcelAmateur,

Ik heb een handmatig testje gedaan en volgens mij heb je gelijk en moet ik daar False van maken, want nu kan ik meerdere formulieren openen.
Ik moet nog een test doen met de tijden, als die test ook positief is zet ik hem op opgelost.

Hartelijk dank voor het meedenken.:thumb:

Adile
 
Als je het formulier automatisch sluit na het klikken op invoeren is je probleem toch opgelost.
Wat betreft het wegschrijven van de gegevens heb je een combinatie nodig van de huidige datum en het uur dat je wil invullen. Wat je dus moet doen is het snijpunt van deze beiden bepalen om de gegevens te plaatsen.

Of maak er dit van.
Code:
Sub dotchie()

    If Form_Is_Loaded("UserFormAantallenInvoeren") Then Exit Sub
    UserFormAantallenInvoeren.Show

End Sub

Function Form_Is_Loaded(Formname As String)
    For Each Obj In VBA.UserForms
        If StrComp(Obj.Name, Formname, vbTextCompare) = 0 Then
            Form_Is_Loaded = True
        End If
    Next Obj
End Function
 
Laatst bewerkt:
Beste ExcelAmateur,

de test is gelukt, hij werkt hartelijk dank daarvoor.

@Warme bakkertje

Soms ben je met andere dingen bezig en ben je 2 uur niet bij je pc en dan moet hij gewoon doorlopen, dat doet hij nu met de hulp van Exel amateur.
Wat de code voor het invoeren betreft, had ik een nieuwe topic geopend omdat het om een nieuwe vraag ging.

hierop heb ik van edmoor de volgende perfect werkende code gekregen.

Code:
Private Sub CMBInvoeren_Click()
    Dim iRow As Long
    Dim kolom As Integer
    Dim ws As Worksheet
    
    Set ws = ActiveSheet
        
    'check for a Name number
    If Trim(Me.CMBAantalP.Value) = "" Then
        Me.CMBAantalP.SetFocus
        MsgBox "Please complete the form"
        Exit Sub
    End If
    
    'Ga naar de regel met de huidige datum
    ws.Cells.Find(What:=Date, _
        After:=Range("A1"), _
        LookIn:=xlValues, _
        LookAt:=xlPart, _
        SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, _
        MatchCase:=False, _
        SearchFormat:=False).Activate
        
    'Bepaal de juiste kolom
    Select Case Hour(Time)
        Case 7:     kolom = 3  'Kolom C
        Case 9:     kolom = 4  'Kolom D
        Case 11:    kolom = 5  'Kolom E
        Case 13:    kolom = 6  'Kolom F
        Case 15:    kolom = 7  'Kolom G
        Case 17:    kolom = 8  'Kolom H
        Case 18
            If Minute(Time) < 30 Then
                    kolom = 9  'Kolom I
            Else
                    kolom = 10 'Kolom J
            End If
        Case 19:    kolom = 11 'Kolom K
        Case 21:    kolom = 12 'Kolom L
        Case 23:    kolom = 13 'Kolom M
    End Select
    
    If kolom = 0 Then
        MsgBox "Incorrect time window"
        Exit Sub
    End If
    
    'copy the data to the database
    ws.Cells(ActiveCell.Row, kolom) = Me.CMBAantalP.Value
    ws.Cells(ActiveCell.Row + 1, kolom) = Me.CmbAantalB.Value
    
    MsgBox "Data added", vbOKOnly + vbInformation, "Data Added"
    
    'clear the data
    Me.CMBAantalP.Value = ""
    Me.CmbAantalB.Value = ""
    Me.CMBAantalP.SetFocus

End Sub

Zodoende mijn problemen met dit bestandje zijn opgelost :)
Maar toch bedankt voor je belangstelling en hulp.

Adile
 
Zoals ik het begrijp kan het dus gebeuren dat je meerdere malen hetzelfde formulier opent. Met mijn code wordt er gewoon gecontroleerd of het formulier al geopend is.
Indien ja, wordt de code gewoon afgebroken en wordt er niet geprobeerd een tweede formulier te openen, in het andere geval wordt het formulier gewoon geopend.
De code van edmoor doet exact wat ik je in mijn eerdere post al gezegd had, alleen heb ik het op een andere manier opgelost.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan