Beste,
Onderstaande code is de code voor een formulier.
Kolommen 1 tem 17 worden ingevoerd door middel van tekstvelden en dan opgeslagen via een knop 'opslagen'.
De knop 'sluiten' sluit het formulier en doet een Call naar Macro1.
Macro 1 doet een autofill van 4 cellen waar formules instaan. (kolommen R-U-V-W)
Als de Macro apart wordt uitgevoerd doet hij exact wat verwacht word, maar in de grotere context van het invullen van het formulier, laat hij het afweten...
Geen idee waarom.
Onderstaande code is de code voor een formulier.
Kolommen 1 tem 17 worden ingevoerd door middel van tekstvelden en dan opgeslagen via een knop 'opslagen'.
De knop 'sluiten' sluit het formulier en doet een Call naar Macro1.
Macro 1 doet een autofill van 4 cellen waar formules instaan. (kolommen R-U-V-W)
Als de Macro apart wordt uitgevoerd doet hij exact wat verwacht word, maar in de grotere context van het invullen van het formulier, laat hij het afweten...
Geen idee waarom.
Code:
Private Sub Opslaan_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Personeel")
'Eerste lege rij vinden
iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
'Beveiliging op naam
If Trim(Me.Naam.Value) = "" Then
Me.Naam.SetFocus
MsgBox "Naam invoeren aub"
Exit Sub
End If
'copieren van de data naar de database
With ws
.Cells(iRow, 1).Value = Me.Naam.Value
.Cells(iRow, 2).Value = Me.Voornaam.Value
.Cells(iRow, 3).Value = Me.Van.Value
.Cells(iRow, 4).Value = Me.Tot.Value
.Cells(iRow, 5).Value = Me.Geboortedatum.Value
.Cells(iRow, 6).Value = Me.Straat.Value
.Cells(iRow, 7).Value = Me.Nummer.Value
.Cells(iRow, 8).Value = Me.Postnummer.Value
.Cells(iRow, 9).Value = Me.Gemeente.Value
.Cells(iRow, 10).Value = Me.Rijksregisternummer.Value
.Cells(iRow, 11).Value = Me.Pensioennummer.Value
.Cells(iRow, 12).Value = Me.Jaar.Value
.Cells(iRow, 13).Value = Me.SectorID.Value
.Cells(iRow, 14).Value = Me.Code.Value
.Cells(iRow, 15).Value = Me.GraadID.Value
.Cells(iRow, 16).Value = Me.Opmerkingen.Value
.Cells(iRow, 17).Value = Me.Stamnummer.Value
End With
'Formulier leegmaken
Me.Naam.Value = ""
Me.Voornaam.Value = ""
Me.Van.Value = ""
Me.Tot.Value = ""
Me.Geboortedatum.Value = ""
Me.Straat.Value = ""
Me.Nummer.Value = ""
Me.Postnummer.Value = ""
Me.Gemeente.Value = ""
Me.Rijksregisternummer.Value = ""
Me.Pensioennummer.Value = ""
Me.Jaar.Value = ""
Me.SectorID.Value = ""
Me.Code.Value = ""
Me.GraadID.Value = ""
Me.Opmerkingen.Value = ""
Me.Stamnummer.Value = ""
Me.Naam.SetFocus
End Sub
'Sluitknop en copie formules cellen R-U-V-W
Private Sub Sluiten_Click()
Call Macro1
Unload Me
End Sub
'copie formules cellen R-U-V-W
Sub Macro1()
Dim iRow2 As Long
Dim from As Range
Dim till As Range
Dim till2 As Range
Dim ws As Worksheet
Set ws = Worksheets("Personeel")
iRow2 = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row
Set from = Cells(ColumnIndex:=18, RowIndex:=iRow2 - 1)
Set till = Cells(ColumnIndex:=21, RowIndex:=iRow2 - 1)
Set till2 = Cells(ColumnIndex:=21, RowIndex:=iRow2)
Dim range1 As Range
Dim range2 As Range
Set range1 = Range(from, till)
Set range2 = Range(from, till2)
range1.AutoFill Destination:=range2, Type:=xlFillDefault
End Sub
'foutmelding venster sluiten via kruisje
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox "Gebruik de sluitknop!"
End If
End Sub