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

Popup bericht sluit automatisch Excel voor Mac

Status
Niet open voor verdere reacties.

RMSpan

Gebruiker
Lid geworden
17 mrt 2022
Berichten
82
Beste mensen

Ik ben opzoek naar een VBA code waarbij ik een popup schermpje krijg in Excel dat een bericht weergeeft en wat zich vervolgens na x tijd automatisch sluit
Nu heb ik op dit forum een antwoord op deze vraag gevonden met de volgende code
Code:
    CreateObject("WScript.Shell").popup "Deze popup duurt ± drie seconden.", 3, "Waarschuwing: Je hoeft niet op OK te klikken", vbCritical

Wanneer ik deze in Excel onder Windows gebruik werkt hij, maar ik werk met een Mac en dan werkt hij niet en krijg ik de volgende foutmelding:
"ActiveX-onderdeel kan object niet maken"

Weet iemand hier een oplossing voor of een code die wel werkt onder Excel voor Mac
 
Als het niet werkt op een Mac en je kunt er niets over vinden, maak er een met een Userform.

Code:
Private Sub UserForm_Activate()
 Application.Wait DateAdd("s", 3, Now)
 Me.Hide
End Sub
 
Application.Wait zet alles stil.
Dan kan je dus ook niet op een knop in die Userform klikken.
Een Timer met Application.OnTime kan dan weer wel.

Geen idee of dat op MacOS ook kan.
 
Laatst bewerkt:
@Edm

Ook een popup in de Windows shell zet alles stil; en dat lijkt me in dit geval ook de bedoeling.
 
TS zegt in #1 dat hij ergens op wil kunnen klikken.
Met Application.Wait gaat dat niet.
Met Application.OnTime en de userform modeless geladen kan dat wel.
 
In #1 staat nergens dat TS ergens op wil klikken.
 
Dan begrijp je het anders dan ik.
 
Hier een oud bestandje om te testen op de Mac met Application.Ontime.
 

Bijlagen

  • hide 5 sec.xlsb
    23,2 KB · Weergaven: 12
@EDm

Om de stelling in #6 kun je niet heen; dat heeft niets met begrip, maar met lezen te maken.
 
Ik kan niet lezen, dat zal het zijn.
 
Goedemorgen heren

Bedankt voor alle input, beide oplossingen werken op de Windows versie prima, op de Mac versie nog niet vlekkeloos
Wel rechtstreeks aangestuurd uit VBAvenster (Userform), hoewel ook niet altijd, maar nog niet goed als hij wordt aangeroepen vanuit een module.

Er is nog wat werk aan de winkel, kom er op terug, nu eerst de hond uitlaten:thumb:
 
popup

Goedemorgen

Ik ben nog aan het stoeien met het popup schermpje en loop tegen het volgende probleem aan:
Wanneer ik de code in de desbetreffende module langs loop in de VB editor met de stap voor stap knop werkt alles naar behoren en komt het popup formuliertje keurig in beeld en verdwijnt automatisch naar 3 sec. precies zoals het bedoelt is.
Echter als ik de module aanroep via een knop in excel Worksheet dan wordt het popup formuliertje niet weergegeven:shocked:, de rest van de code wordt goed uitgevoerd??????
Eerste module:
Code:
Sub Validate_Form1()' Input uitgavenformulier
errorCount = Range("AL5").Value
Set showErrorCell = Range("AM5")
'Check for errors.
If errorCount > 0 Then
    'Error!
    'Tell the user how many errors there are.
    MsgBox errorCount & " Error(s)" & " Niet alle gegevens ingevuld"
    'Allow conditional formatting for errors to be displayed.
    showErrorCell.Value = 1
Else
    'NO Error - All Good!
      ' Store the Data
    ' - call the macro that does that.
    Call Store_Data1
    'Turn conditional formatting for errors off.
    showErrorCell.Value = 0
End If
     UserForm2.Show
End Sub

Deze roept de volgende module op:
Code:
Sub Store_Data1()' Takes data from worksheet Gegevens (Uitgavenformulier) and stores in in the next empty row on Uitgaven worksheet.
Dim sourceSheet As Worksheet
Dim dataSheet As Worksheet
Dim nextRow As Integer
' Make some sheet variables .
Set sourceSheet = Worksheets("Gegevens")
Set dataSheet = Worksheets("Uitgaven")
' Get the next empty row from the Data sheet.
nextRow = dataSheet.Range("B" & dataSheet.Rows.Count).End(xlUp).Offset(1).Row


' Input the form values into the Data sheet.
dataSheet.Cells(nextRow, 2).Value = sourceSheet.Range("I5").Value
dataSheet.Cells(nextRow, 3).Value = sourceSheet.Range("I7").Value
dataSheet.Cells(nextRow, 4).Value = sourceSheet.Range("I9").Value
dataSheet.Cells(nextRow, 5).Value = sourceSheet.Range("I11").Value
dataSheet.Cells(nextRow, 6).Value = sourceSheet.Range("I13").Value
dataSheet.Cells(nextRow, 7).Value = sourceSheet.Range("I15").Value
dataSheet.Cells(nextRow, 8).Value = sourceSheet.Range("I17").Value
dataSheet.Cells(nextRow, 9).Value = sourceSheet.Range("I19").Value
dataSheet.Cells(nextRow, 10).Value = sourceSheet.Range("I21").Value
dataSheet.Cells(nextRow, 11).Value = sourceSheet.Range("I23").Value
dataSheet.Cells(nextRow, 12).Value = sourceSheet.Range("I25").Value
dataSheet.Cells(nextRow, 13).Value = sourceSheet.Range("I27").Value


'Clear Data
sourceSheet.Range("I5,I7,I9,I11,I13,I15,I17,I23,I25,I27").Select
Selection.ClearContents
Range("I5").Select


End Sub
Na opdracht keer je terug naar de eerste module, vanwaaruit het popup formulier wordt aangeroepen (jullie inbreng)
Code:
Private Sub UserForm_Activate()
Application.Wait DateAdd("s", 3, Now)
Me.Hide
End Sub
en dan zijn we klaar, data opgeslagen, invoerscherm leeg gemaakt en popup formulier getoond.
Vraag is dus hoe kan het dat het in Vba editor wel werkt en vanuit de sheet niet??
 
De code in Sub Validate_Form1() opent het Userform2 altijd.(Windows versie)
Heb je wel de goede code geplaatst , krijg je een foutmelding ?
Plaats anders een voorbeeldbestand.
 
Ja, zo zou het moeten ook op de Mac, maar helaas ik krijg het niet voor elkaar vanuit de sheet, wel vanuit de VBA editor omgeving.
Ik plaats mijn test bestand hierbij, ik wil nog wel even aangeven dat dit bestand nog in een ontwikkelingstadium zit en er dus nog de nodige fouten in zitten die ik moet oplossen. Kortom het is nog een beetje een rommeltje.

ik ben benieuwd of iemand het probleem kan tackelen.
 

Bijlagen

  • test form 3.xlsm
    287,8 KB · Weergaven: 12
Wellicht:

Code:
Private Sub UserForm_Activate()
    Application.Wait DateAdd("s", 3, Now)
    Unload Me
End Sub
 
Beste SNB
Bedankt voor het meedenken, maar het probleem zit hem niet in het afsluiten van het UseForm maar in het aanroepen er van, dit doet hij wel in de VBA editor maar niet vanuit de Sheet, dan loopt hij gewoon over deze regel heen.
 
Hoezo vanuit de sheet ?
De code staat in de codemodule van het Userform niet in de macromodule van enig werkblad.
 
Bij mij werkt het gewoon (Windows versie)
verwijder eens de code in UserForm_Activate ,mogelijk werkt die niet op een MAC.
 
Dat klopt, misschien ben ik niet duidelijk.
Ik heb in het excel werkblad een invulblad gegevens ( zie voorbeeld bestand) waarop ik gegevens invul die opgeslagen worden in een blad relaties
via de aangemaakte knop save worden de gegevens middels (Makro) Vba code opgeslagen is alles goed gegaan dan wil ik dat pop-up formuliertje een paar seconden verschijnt met de tekst “gegevens opgeslagen”
als ik het opslaan doe dmv de knop save dan gaat alles goed, gegevens worden opgeslagen, alle regels van de Vba code worden gelezen en uitgevoerd behalve de code
Code:
 UserForm.show.
Wanneer ik nu in de Vba editor zit en vandaar uit stap voor stap de coderegels uitvoer dan wordt de code
Code:
UserForm.show.
wel uitgevoerd en dat begrijp ik dus niet vandaar mijn vraag.
 
Haal die punt eens weg achteraan. Heet je userform echt Userform? Of is het iets als Userform1?

Code:
UserForm.show
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan