Excel Pop-up melding/messagebox met automatisch antwoord in cel

Status
Niet open voor verdere reacties.

Myrthe92

Gebruiker
Lid geworden
8 apr 2017
Berichten
94
Hallo allemaal,

Ik heb al meerdere malen op het forum gekeken voor een oplossing, maar het lukt mij maar niet om het zelf voor elkaar te krijgen.

Het gaat om het volgende:
Ik wil graag als de werkmap geopend wordt, dat de persoonsgegevens eerst ingevuld moeten worden voordat er überhaupt op het werkblad verder gewerkt kan worden.
Onder persoonsgegevens staat ook het punt "Behandelbeperking". Hierin is een keuzelijst verwerkt: "ja, niet reanimeren" of "nee, wel reanimeren". Stel: een collega geeft géén antwoord op het punt "behandelbeperking", wil ik graag dat de volgende melding komt: "Is er sprake van een behandelbeperking" en dan ook in deze massagebox gelijk de keuze verwerken uit de keuzelijst in de vorm van een button "ja, niet reanimeren" of "nee, wel reanimeren" en dat dit antwoord automatisch wordt verwerkt in de juiste cel.
Is dit überhaupt mogelijk?

Ik heb in de bijlage een vereenvoudigd bestand toegevoegd.
Ik hoop dat jullie mij kunnen helpen.
Alvast bedankt!

Groetjes,

Myrthe
 

Bijlagen

  • Test.xlsx
    38,4 KB · Weergaven: 203
Hoi Myrthe, welkom op het forum:D
Op zich is uw vraag geen probleem, er gaat alleen wat tijd inzitten om een degelijk voorzetje te maken.
Een vraagje enerzijds, moeten alle velden verplicht ingevuld worden?
Het lijkt mij dat het aantal behandelingen of de stopdatum b.v. gegevens zijn die niet op voorhand vaststaan, ik kan natuurlijk fout zijn.
Een opmerking, ik zie dat je in je bestandje samengestelde cellen gebruikt, stap daar gelijk vanaf, daarmee heb je vroeger of later problemen.
Als je me een beetje tijd geeft knutsel ik wel iets in elkaar.

Voor mij is dit iets nieuws in excel
deze massagebox
:p
 
Laatst bewerkt:
Zoveel tijd gaat er toch niet inzitten. Maak geen gebruik van samengevoegde cellen. Bij het openen van het bestand wordt er een formulier getoond waarvan alle velden verplicht zijn. Leeftijd lijkt mij een beetje onnozel omdat dit per dag kan wijzigen maar daar heb ik verder niets meegedaan.
 

Bijlagen

  • Myrthe92.xlsb
    22,6 KB · Weergaven: 316
Laatst bewerkt:
Ik bedoelde ook geen dagen
Zoveel tijd gaat er toch niet inzitten
Maar
de persoonsgegevens eerst ingevuld moeten worden voordat er überhaupt op het werkblad verder gewerkt kan worden.
Als de userform wordt afgesloten kunnen ze gewoon verder werken in de sheet en geen bal invullen, wat volgens mij niet de bedoeling is, het lijkt mij dat in dit geval (als niet alle gegevens zijn ingevuld) het Excel bestand gewoon wordt gesloten, mits een keuze natuurlijk.
Je mag dan wel snelle (rappe) Vena zijn:p maar is daarmee alles afgevangen?
 
De X rechtsboven uitzetten zal mij ongetwijfeld ook nog wel lukken.:d Eerst maar een zien wat de TS met het geheel wil.
 
Met een controle in de Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) is dat ook opgelost :)
 
idd
Eerst maar een zien wat de TS met het geheel wil.
indien het niet lukt
De X rechtsboven uitzetten zal mij ongetwijfeld ook nog wel lukken
mag jij mij altijd om hulp vragen:p:p:d:D

Edit blijkbaar is Edmoor je al te hulp geschoten:D
 
Laatst bewerkt:
Allereerst hartstikke bedankt voor jullie snelle reactie en ik ben jullie hartstikke dankbaar, dat jullie mij zo op weg willen helpen met mijn massagebox;)

Jullie begrijpen goed waar ik naar toe wil. Het is een vereenvoudigd bestand. In mijn originele bestand wordt de stopdatum a.d.h.v. startdatum automatisch berekend, het aantal behandelingen worden automatisch berekend a.d.h.v. het aantal trainingen en de leeftijd wordt automatisch berekend a.d.h.v. de geboortedatum. Deze staan dus zoals gast0660 al zei niet op voorhand vast. Daarom kan de stopdatum, het aantal behandelingen en de leeftijd uit het "UserForm 1" verwijderd kunnen worden.
Klopt het dan, dat als mijn collega's wel de startdatum bv. "26-03-2017" en geboortedatum "01-01-1955" invullen en de overige gegevens compleet hebben ingevuld en op "Opslaan" drukken, dat de formules wel hun werk blijven doen?

Het invulmenu wordt nu benoemd als "UserForm 1", is het mogelijk deze te wijzigen in de naam "Persoonsgegevens"?

En Edmoor gaf de volgende controle: Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
voor het verplicht invullen van de velden, zodat dat mijn collega's het "UserForm 1" pas kunnen afsluiten als zij alles hebben ingevuld. Maar waar moet ik deze onder verwerken? Als ik het zelf verwerk krijg ik hem niet werkzaam. Ik ben wat dat betreft nog echt een dummie met het werken in VBA.

Wederom nogmaals bedankt:thumb:
 
Een voorbeeld. Maak een userform met 1 textbox en 1 button. Zet dan deze code er achter:
Code:
[COLOR="#008000"]'Code voor de knop[/COLOR]
Private Sub CommandButton1_Click()
    If ControleOK Then Me.Hide
End Sub

[COLOR="#008000"]'Code voor als het formulier wordt gesloten[/COLOR]
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    [COLOR="#008000"]'Alleen als er op het kruisje is geklikt[/COLOR]
    If CloseMode = vbFormControlMenu Then
        If Not ControleOK Then Cancel = True
    End If
End Sub

[COLOR="#008000"]'Deze functie doet de eigenlijke controle[/COLOR]
Private Function ControleOK() As Boolean
    If TextBox1.Text = "" Then
        MsgBox "Er is niks ingevuld, het formulier wordt niet gesloten"
        ControleOK = False
    Else
        MsgBox "Alles in orde, het formulier wordt gesloten"
        ControleOK = True
    End If
End Function

Zo is er dus maar 1 routine die de controle doet en die wordt gestart door zowel een klik op de knop als door een klik op het kruisje.

Het voorbeeld document:
Bekijk bijlage Map1.xlsm

Uiteraard kan je ook gewoon niks doen als er op het kruisje wordt geklikt:
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then Cancel = True
End Sub

Het invulmenu wordt nu benoemd als "UserForm 1", is het mogelijk deze te wijzigen in de naam "Persoonsgegevens"?

Ja, dat kan je in de eigenschappen regelen bij Caption:
Formnaam.JPG Form.jpg

Daarnaast kan je het formulier object zelf ook een andere naam geven bij (Name). Bijvoorbeeld:
frmPersoonsgegevens

Dat zie je in het formulier zelf niet terug maar gebruik je in je code om naar dat specifieke formulier te verwijzen:
frmPersoonsgegevens.Show
Of wat je dan ook vanuit je code met dat formulier wilt doen. Als je met meerdere formulieren in een document werkt is het handig om dat in ieder geval te doen, al doe ik het zelf ook als er maar 1 formulier is.
 
Laatst bewerkt:
Mijn bijdrage op een zonnige zondag na een paar Duveltjes op een zonnig terrasje.:)
(met een kwinkslag)
 

Bijlagen

  • Myrthe haar massagebox.xlsb
    22,9 KB · Weergaven: 207
Code:
Application.Quit
Lijkt mij niet echt een nuttige aanvulling in een voorbeeldbestandje zonder dat er vermelding van gemaakt wordt.
 
Ik zou het doen:

- zonder merged cells
- met indentation in de VBA-code
- zonder berichtenvensters
 

Bijlagen

  • __alternatiefs snb.xlsb
    19,2 KB · Weergaven: 211
gast0660 en snb nog bedankt voor jullie reactie!

Ik ben afgelopen week er verder mee aan de slag gegaan en ben door jullie opzet nu aardig waar ik wil zijn.
Uitgaande van gast0660 zijn opzet wil ik de gegevens vanuit het excel-document de VBA-gegevens overzetten naar mijn Eigen originele Excel-bestand. Volgens mij betreffen het alleen "frmgegevens", klopt dit gast0660? Hoe kan ik dit beste doen? Dit heeft natuurlijk als doel dat de "massagebox";) dan als eerste wordt getoond bij het openen van mijn excel-document. Ik kan helaas niet mijn origineel excel-bestand uploaden, omdat het werkgegevens en patiëntengegevens bevat.:(

Ik hoop dat jullie mij toch nog willen helpen met de laatste stap.
Nogmaals bedankt!
 
Hoi Myrthe,
Als uw vb bestandje klopt met het werkelijke blad hoef je maar twee dingen te doen.
1.Open uw echte bestand (kopie) en mijn vbtje.
Sleep het formulier van het vbtje naar het echte bestand.
2. Plaats volgend stukje code in ThisWorkbook
Code:
Private Sub Workbook_Open()
  Worksheets("[COLOR="#FF0000"]Invulblad[/COLOR]").Activate
  frmgegevens.Show
End Sub
(rode gedeelte vervangen door de naam van het invulblad in uw echte bestand)
 
Hoi gast0660,

Dank u wel voor uw reactie.
Wat bedoelt u precies met het formulier? Is dat het "invulformulier persoonsgegevens" dat verschijnt bij het openen van het bestand?

En bij onderstaande code:

Code:
Private Sub Workbook_Open()
Worksheets("Invulblad").Activate
frmgegevens.Show
End Sub

Moet ik bij "invulblad" dan invullen de naam van mijn werkblad in mijn eigen document?

Nogmaals bedankt, ik zou willen dat ik een paar van die goede duveltjes;)
 
Open mijn vbtje en uw echte bestand (probeer eerst op een kopie)
Open nu de VBA editor (Alt + F11).
Daar ga links in de editor in mijn vbtje het invulformulier zien (frmgegevens), sleep dat naar uw echte bestand.
Daar ga je ook ThisWorkbook zien, plaats het stukje code in ThisWorkbook sectie van uw bestand.
Verander invulblad door de echte naam van uw werkblad in uw eigen document.
 
gast0660 hartstikke bedankt. Ben er denk ik nu ECHT bijna. Echter ontstaat er nu een foutmelding bij het opslaan in VBA (zie afbeelding 1).
Wat doe ik fout?Foutmelding bij opslaan in VBA.jpg
 
Je moet opslaan als een werkboek met macro, dus de XLSM extensie, niet de XLSX.
 
of XLSB (binaire werkmap)
Geniet mijn voorkeur, file is kleiner en start sneller op.
 
De foutmelding blijft aanwezig. Of ik nu de extensie XLSM of XLSB geef. Na het opslaan wordt er automatisch ".xlsx" erachter geplakt. Terwijl ik dit nadrukkelijk weg haal.

Ik heb dit geprobeerd:
Voordat ik alle gegevens vanuit het VB-bestand over heb gezet naar mijn Exceldocument, heb ik mijn excel-document al opgeslagen als XLSM en XLSB. Dus beide extensies geprobeerd. Daarna heb ik pas alle gegevens vanuit het VB-bestand verplaatst naar mijn document en de gegeven code in ThisWorkbook geplakt.
Als ik het dan in VBA wil opslaan blijft de foutmelding ontstaan en plakt wordt er achter .XLSM of .XLSB alsnog .XLSX geplakt. In VBA zit alleen een knop SAVE, niet SAVE AS.

Deze domkop doet vast iets fout, maar wat..?
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan