Hallo,
ik heb in mijn worksheet een worksheet_change macro die 2 macro's na elkaar start. deze kan ik ook handmatig starten.
dit zijn de macro's:
de bedoeling is dat als in een bepaalde cel "Te Factureren" wordt geselecteerd(via een gegevensvalidatielijst), dat er een nieuwe rij wordt gemaakt met cel A,C en J tot S leeg, cel D, E moeten worden gekopieerd, in cel B en F moet beschikbaar staan, in G moet leeg staan en in I moet "eigen terrein" staan.
het probleem is dat als ik nu de macro 'Nieuwe Container' handmatig start, hij de huidige rij alleen F op 'Beschikbaar' zet en de rest van de veranderingen in de rij eronder doet.
bij de automatische macro is het enige probleem dat de cel E de verkeerde waarde is, maar dat is nog handmatig op te lossen.
Ik gebruik excel 2013 voor windows 10
Ik heb geprobeerd wat veranderingen aan te brengen die mij logisch leken, maar mijn vba kennis is daar niet goed genoeg voor, wat hier nu staat heb ik ooit ook een keer van google afgehaald
ik heb het vermoeden dat hij door de worksheet_change sorteert voordat hij de wijzigingen maakt in de nieuwe regel, maar dit weet ik niet zeker, ik heb geprobeerd met EnableEvents in de 'Nieuwe Container' macro dit te voorkomen, maar dat werkte ook niet.
iemand enig idee hoe ik dit op moet lossen?
ps, voor als dit iemand bekent voor komt, over dit bestand heb ik al een keer een topic gehad (macro starten bij bepaalde waarde in de cel)
ik heb in mijn worksheet een worksheet_change macro die 2 macro's na elkaar start. deze kan ik ook handmatig starten.
dit zijn de macro's:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
| Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim x As String x = "Te Factureren" Dim y As String y = "bb transport" If ActiveCell.Text = x And ActiveCell.Offset(0, 5).Text = y Then Call Nieuwe_Container End If Call Sorteren Application.EnableEvents = True End Sub |
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| Sub Sorteren() ActiveWorkbook.Worksheets("Verhuur").ListObjects("Tabel1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Verhuur").ListObjects("Tabel1").Sort.SortFields.Add _ Key:=Range("Tabel1[Kolom22]"), SortOn:=xlSortOnValues, Order:=xlDescending _ , DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Verhuur").ListObjects("Tabel1").Sort.SortFields.Add _ Key:=Range("Tabel1[Kolom21]"), SortOn:=xlSortOnValues, Order:=xlAscending _ , DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Verhuur").ListObjects("Tabel1").Sort.SortFields.Add _ Key:=Range("Tabel1[Kolom20]"), SortOn:=xlSortOnValues, Order:=xlDescending _ , DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Verhuur").ListObjects("Tabel1").Sort.SortFields.Add _ Key:=Range("Tabel1[Kolom19]"), SortOn:=xlSortOnValues, Order:=xlDescending _ , DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Verhuur").ListObjects("Tabel1").Sort.SortFields.Add _ Key:=Range("Tabel1[Kolom4]"), SortOn:=xlSortOnValues, Order:=xlAscending _ , CustomOrder:="open/afgevoerd,Zelf in gebruik, Beschikbaar, openstaand,geplaatst,Te Factureren,Gefactureerd,.,Afgehandeld", DataOption:= _ xlSortNormal ActiveWorkbook.Worksheets("Verhuur").ListObjects("Tabel1").Sort.SortFields.Add _ Key:=Range("Tabel1[Kolom2]"), SortOn:=xlSortOnValues, Order:=xlAscending _ , DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Verhuur").ListObjects("Tabel1").Sort.SortFields.Add _ Key:=Range("Tabel1[Kolom15]"), SortOn:=xlSortOnValues, Order:=xlAscending _ , DataOption:= _ xlSortNormal ActiveWorkbook.Worksheets("Verhuur").ListObjects("Tabel1").Sort.SortFields.Add _ Key:=Range("Tabel1[Kolom13]"), SortOn:=xlSortOnValues, Order:= _ xlDescending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Verhuur").ListObjects("Tabel1").Sort.SortFields.Add _ Key:=Range("Tabel1[Kolom6]"), SortOn:=xlSortOnValues, Order:= _ xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Verhuur").ListObjects("Tabel1").Sort.SortFields.Add _ Key:=Range("Tabel1[Kolom72]"), SortOn:=xlSortOnValues, Order:= _ xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Verhuur").ListObjects("Tabel1").Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With |
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| End Sub Sub Nieuwe_Container() ' ' Nieuwe_Container Macro ' ' ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select Application.CutCopyMode = False Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ActiveCell.Offset(-1, 3).Range("A1").Select Selection.Copy ActiveCell.Offset(1, 0).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 1).Range("A1").Select Application.CutCopyMode = False Selection.Copy ActiveCell.Offset(1, 0).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(0, 4).Range("A1").Select Application.CutCopyMode = False ActiveCell.Offset(0, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "eigen terrein" ActiveCell.Offset(0, -2).Range("A1").Select ActiveCell.FormulaR1C1 = "leeg" ActiveCell.Offset(0, -5).Range("A1").Select ActiveCell.FormulaR1C1 = "Beschikbaar" ActiveCell.Offset(0, 4).Range("A1").Select ActiveCell.FormulaR1C1 = "Beschikbaar" ActiveCell.Offset(0, -5).Range("A1").Select ActiveCell.FormulaR1C1 = "" ActiveCell.Offset(0, 2).Range("A1").Select ActiveCell.FormulaR1C1 = "" End Sub |
de bedoeling is dat als in een bepaalde cel "Te Factureren" wordt geselecteerd(via een gegevensvalidatielijst), dat er een nieuwe rij wordt gemaakt met cel A,C en J tot S leeg, cel D, E moeten worden gekopieerd, in cel B en F moet beschikbaar staan, in G moet leeg staan en in I moet "eigen terrein" staan.
het probleem is dat als ik nu de macro 'Nieuwe Container' handmatig start, hij de huidige rij alleen F op 'Beschikbaar' zet en de rest van de veranderingen in de rij eronder doet.
bij de automatische macro is het enige probleem dat de cel E de verkeerde waarde is, maar dat is nog handmatig op te lossen.
Ik gebruik excel 2013 voor windows 10
Ik heb geprobeerd wat veranderingen aan te brengen die mij logisch leken, maar mijn vba kennis is daar niet goed genoeg voor, wat hier nu staat heb ik ooit ook een keer van google afgehaald
ik heb het vermoeden dat hij door de worksheet_change sorteert voordat hij de wijzigingen maakt in de nieuwe regel, maar dit weet ik niet zeker, ik heb geprobeerd met EnableEvents in de 'Nieuwe Container' macro dit te voorkomen, maar dat werkte ook niet.
iemand enig idee hoe ik dit op moet lossen?
ps, voor als dit iemand bekent voor komt, over dit bestand heb ik al een keer een topic gehad (macro starten bij bepaalde waarde in de cel)