(Sorry, het titelveld was niet groot genoeg om het probleem goed te omschrijven)
Ik heb een dropdown waar x aantal items in staan. Als een item gekozen wordt, wordt er een actie uitgevoerd. Er zijn verschillende dropdowns met verschillende acties op verschillende pagina's, maar ze hebben allemaal hetzelfde probleem: default is de dropdown leeg en als je klikt op de box en een item kiest werkt alles perfect. Klik je echter meteen terug op het blanco veld, dan krijg je een error: "Unable to get the list property of the dropdown class".
De macro wordt dus wel degelijk uitgevoerd als een item gekozen wordt, maar hij verslikt zich als ik blanco kies. Nu is VBA niet mijn specialiteit: dit kadert in een groot Powershellscript van waaruit ik VBA injecteer in een Exceldocument. Ik moet dat ding wijsmaken dat wanneer de gekozen waarde blanco is hij niets moet doen. Ik zou niet meteen weten hoe, aangezien de gekozen waarde eigenlijk een zoekopdracht op een ander werkblad is. Ik probeerde een "On Error Resume Next", maar vanaf dan werkt geen enkele keuze in de dropdown nog
Het is dus geen vreselijk probleem: mijn macro werkt; maar ik heb niet graag dat er een handeling kan gebeuren die errors genereert. Als iemand mij daar vanaf kan helpen: bedankt voor je tips.
Voorbeeldcode van één van de dropdowns:
Ik heb een dropdown waar x aantal items in staan. Als een item gekozen wordt, wordt er een actie uitgevoerd. Er zijn verschillende dropdowns met verschillende acties op verschillende pagina's, maar ze hebben allemaal hetzelfde probleem: default is de dropdown leeg en als je klikt op de box en een item kiest werkt alles perfect. Klik je echter meteen terug op het blanco veld, dan krijg je een error: "Unable to get the list property of the dropdown class".
De macro wordt dus wel degelijk uitgevoerd als een item gekozen wordt, maar hij verslikt zich als ik blanco kies. Nu is VBA niet mijn specialiteit: dit kadert in een groot Powershellscript van waaruit ik VBA injecteer in een Exceldocument. Ik moet dat ding wijsmaken dat wanneer de gekozen waarde blanco is hij niets moet doen. Ik zou niet meteen weten hoe, aangezien de gekozen waarde eigenlijk een zoekopdracht op een ander werkblad is. Ik probeerde een "On Error Resume Next", maar vanaf dan werkt geen enkele keuze in de dropdown nog
Het is dus geen vreselijk probleem: mijn macro werkt; maar ik heb niet graag dat er een handeling kan gebeuren die errors genereert. Als iemand mij daar vanaf kan helpen: bedankt voor je tips.
Voorbeeldcode van één van de dropdowns:
VBScript:
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
43
44
45
46
47
48
49
50
51
| Sub AddUsers() 'Declarations Dim Row As String Dim Application As String Dim arrUserData As Variant Dim objUserData As Variant Dim intLastRow As Integer Dim intEndCounter As Integer Dim intWriteCounter As Integer Dim intCounter As Integer Dim Range As String 'Find application Row = CStr(ActiveSheet.Range("$S$1").Value) Application = ActiveSheet.DropDowns(1).List(Row) 'Find last row If ActiveSheet.Name = "Packages Users" Then intLastRow = Worksheets(4).UsedRange.SpecialCells(11).Row Else If ActiveSheet.Name = "Free Users" Then intLastRow = Worksheets(7).UsedRange.SpecialCells(11).Row Else If ActiveSheet.Name = "Licenced Users" Then intLastRow = Worksheets(10).UsedRange.SpecialCells(11).Row Else intLastRow = Worksheets(13).UsedRange.SpecialCells(11).Row End If End If End If 'Create array Range = "$K$1" & ":$R$" & intLastRow arrUserData = ActiveSheet.Range(Range).Value 'Write data from array intWriteCounter = 1 intEndCounter = intLastRow For intCounter = 2 To intEndCounter If arrUserData(intCounter, 1) = Application Then intWriteCounter = intWriteCounter + 1 ActiveSheet.Cells(intWriteCounter, 4) = arrUserData(intCounter, 2) ActiveSheet.Cells(intWriteCounter, 5) = arrUserData(intCounter, 3) ActiveSheet.Cells(intWriteCounter, 6) = arrUserData(intCounter, 4) ActiveSheet.Cells(intWriteCounter, 7) = arrUserData(intCounter, 5) ActiveSheet.Cells(intWriteCounter, 8) = arrUserData(intCounter, 6) ActiveSheet.Cells(intWriteCounter, 9) = arrUserData(intCounter, 7) ActiveSheet.Cells(intWriteCounter, 10) = arrUserData(intCounter, 8) End If Next End Sub |