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

Msgbox bij opslaan

Status
Niet open voor verdere reacties.

jaggy1962

Gebruiker
Lid geworden
19 aug 2010
Berichten
36
Hoi allemaal,

Ik heb een knop gemaakt met de werkset besturingselementen en deze heet berekening opslaan.
Nu wil ik als ik het bestand opsla via deze knop dat hij eerst in cel B1 kijkt ofdat deze is ingevuld als dit niet zo is moet er een waarschuwing komen via een msg box en het opslaan stopt.
Als de cel wel is ingevuld moet er een msgbox komen die vraagt of dat dit een projectnummer is of een order nummer bij ja moet het bestand worden opgeslagen volgens cel B1 bij nee moet hij het bestand opslaan volgens cel B3 ook hier moet hij eerst kijken of dat deze is ingevuld zoniet weer een waarschuwing via msgbox bijvoorbeeld vul opdrachtnummer in en dat hij dan het opslaan afsluit zonder het bestand op te slaan.
Wie kan me helpen.

Mvrgr jaggy
 
dit voorbeeld komt direct uit de microsoft help en moet in je project explorer in de "ThisWorkbook" code tab geplaatst worden (dus niet module1)

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    a = MsgBox("Do you really want to save the workbook?", vbYesNo)
    If a = vbNo Then Cancel = True
End Sub

deze code draait altijd als geprobeerd wordt te saven, dus hoef je niet speciaal aan te roepen. Volgens mij kun je met dit voorbeeld eenvoudig door je gewenste stappen lopen.
 
dit voorbeeld komt direct uit de microsoft help en moet in je project explorer in de "ThisWorkbook" code tab geplaatst worden (dus niet module1)

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    a = MsgBox("Do you really want to save the workbook?", vbYesNo)
    If a = vbNo Then Cancel = True
End Sub

deze code draait altijd als geprobeerd wordt te saven, dus hoef je niet speciaal aan te roepen. Volgens mij kun je met dit voorbeeld eenvoudig door je gewenste stappen lopen.

Hoi Wampier,

bedankt maar kan je me iets verder op weg helpen want ik ben een beginneling.
Alvast bedankt
 
dat wordt dan zoiets:

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Range("b1").Value = "" Then
       a = MsgBox("graag B1 invullen", vbOKOnly)
       Cancel = True
    Else
        a = MsgBox("is B1 een projectnummer", vbYesNo)
        If a = vbYes Then
            ' bestandnaam = range("b1") etc.
        Else
            If Range("b3").Value = "" Then
                a = MsgBox("graag B3 invullen", vbOKOnly)
                Cancel = True
            Else
                ' bestandnaam = range("b3") etc.
            End If
        End If
    End If
    
End Sub
 
dat wordt dan zoiets:

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Range("b1").Value = "" Then
       a = MsgBox("graag B1 invullen", vbOKOnly)
       Cancel = True
    Else
        a = MsgBox("is B1 een projectnummer", vbYesNo)
        If a = vbYes Then
            ' bestandnaam = range("b1") etc.
        Else
            If Range("b3").Value = "" Then
                a = MsgBox("graag B3 invullen", vbOKOnly)
                Cancel = True
            Else
                ' bestandnaam = range("b3") etc.
            End If
        End If
    End If
    
End Sub

Hoi

Het is gelukt hartelijk bedankt.

Mvrgr Jaggy
 
Macro verlaten

Hallo,

ik heb bovenstaande toegepast in een bestaande macro, maar na uitvoering van de check op cel c3 komt de mededeling, maar de macro loopt gewoon verder. Hij moet stoppen met de verwerking daarvan. Wat vergeet ik nu?


Code:
Private Sub Opslaan_Click()

'
'
With Range("A3:H" & ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row - 1)
    .Sort Key1:=Range("B3"), Order1:=xlDescending, Header:=xlGuess
    .Interior.Color = xlNone
        With .Font
            .Name = "Verdana"
            .Size = 10
            .ColorIndex = xlAutomatic
        End With
        
        
  [COLOR="red"] If Range("C3").Value = "" Then
       a = MsgBox("U heeft niets ingevuld in Cel C3", vbOKOnly)
       Cancel = True
    End If[/COLOR]
    
    
    Dim Bestandsnaam As String
  Dim Sysdate
  Dim tel As Integer, Letter As String
  Sysdate = Format(Date, "yyyymmdd")
  tel = 0
  Do
    If tel > 0 Then
      Letter = "-" & LCase(Replace(Left(Cells(1, tel).Address, 3), "$", "")) 'vertaal teller naar een kolomletter
    Else
      Letter = ""
    End If
    Bestandsnaam$ = "G:\" & [C3] & "-" & Sysdate & Letter & ".xls"  'bestand noemt straks zo
    If Dir(Bestandsnaam$) = "" Then                        'bestaat die naam al in die directory ?
      ActiveWorkbook.SaveAs Bestandsnaam$                  'zo niet saven
      
      MsgBox "Het bestand              " & "'" & [C3] & "-" & Sysdate & Letter & "'" & "              is opgeslagen." & Chr(10) & Chr(10) & "Vergeet niet nog uit te printen!"
             
             
      tel = 0                                              'teller op 0 zetten om uit de loop te komen
    Else
      tel = tel + 1                                        'bestand bestond al, dus teller 1 ophogen
    End If
    If tel > Columns.Count Then MsgBox "Paniek": Exit Sub
  Loop While tel <> 0

End With


End Sub
 
Laatst bewerkt:
Ik heb het zelf al gevonden, heb ipv Cancel = True een Exit Sub toegevoegd en voila. Ik heb geleerd, dus ik besta! En nu ga ik weer slapen, want de wekker loopt met anderhalf uur weer af.;)
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan