Ik heb enige tijd geleden een Powershell-scriptje gemaakt waar wat VBA bij te zien komt omdat er een Excelbestand aangemaakt wordt. Nu wordt me gevraagd nieuwe functionaliteit toe te voegen en duik ik weer in VBA, een taal waar ik niet vertrouwd mee ben. Momenteel bijt ik even mijn tanden stuk op het volgende.
Gegeven de volgende range:
Ik maak een array op de volgende manier:
In deze array zit inderdaad de informatie die ik wil.
Waar ik vast zit is bij mijn loop:
Op deze manier krijg ik de data terug als volgt
Dat is niet wat ik wil natuurlijk. Wat ik voor ogen had is een equivalent als de ForEach in Powershell
Waarbij het resultaat zou zijn
Natuurlijk, in PoSh is dat een mooi object met properties dat ik terug krijg. Dat zou ik eigenlijk ook voor mekaar willen krijgen in VBA, zodat ik de aparte properties kan opvragen. Mijn bedoeling is om een If in die loop te steken als filter, maar eerst moet ik uitvinden hoe om te gaan met mijn data natuurlijk.
Tips en oplossingen zijn welgekomen.
Ik heb zelf al een oplossing gevonden, nl. op onderstaande manier:
Gegeven de volgende range:
K | L | M | N | O | P | Q | R | |
| 1 | Microsoft Office 2010 | 29/08/2012 | Sales | PC254 | doejohn | Doe | John | JohnDoe@acme.com |
| 2 | Microsoft Office 2010 | 14/03/2012 | IT | PC150 | doejane | Doe | Jane | JaneDoe@acme.com |
| 3 | Autodesk AutoCad | 16/07/2012 | Management | PC320 | doejunior | Doe | Junior | JuniorDoe@acme.com |
Ik maak een array op de volgende manier:
Visual Basic .NET:
1
2
3
| intLastRow = Worksheets(10).UsedRange.SpecialCells(11).Row Range = "$K$1" & ":$R$" & intLastRow arrUserData = ActiveSheet.Range(Range).Value |
In deze array zit inderdaad de informatie die ik wil.
code:
1
2
3
4
5
| arrUserData(0,0) Microsoft Office 2010 arrUserData(2,5) Junior |
Waar ik vast zit is bij mijn loop:
Visual Basic .NET:
1
2
3
| For Each objUserData In arrUserData Debug.Print objUserData Next |
Op deze manier krijg ik de data terug als volgt
code:
1
2
3
4
5
6
7
8
| 1. Microsoft Office 2010 2. Microsoft Office 2010 3. Autodesk AutoCad 4. 29/08/2012 5. 14/03/2012 6. 16/07/2012 7. IT (etc) |
Dat is niet wat ik wil natuurlijk. Wat ik voor ogen had is een equivalent als de ForEach in Powershell
C#:
1
2
3
4
| ForEach ($objUserData in $arrUserData) { Write-Host $objUserData } |
Waarbij het resultaat zou zijn
code:
1
2
| 1. Microsoft Office 2010 29/08/2012 Sales PC254 doejohn Doe John JohnDoe@acme.com 2. Microsoft Office 2010 14/03/2012 IT PC150 doejane Doe Jane JaneDoe@acme.com |
Natuurlijk, in PoSh is dat een mooi object met properties dat ik terug krijg. Dat zou ik eigenlijk ook voor mekaar willen krijgen in VBA, zodat ik de aparte properties kan opvragen. Mijn bedoeling is om een If in die loop te steken als filter, maar eerst moet ik uitvinden hoe om te gaan met mijn data natuurlijk.
Tips en oplossingen zijn welgekomen.
Ik heb zelf al een oplossing gevonden, nl. op onderstaande manier:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
| intEndCounter = intLastRow For intCounter = 1 To intEndCounter If arrUserData(intCounter, 1) = Application Then Debug.Print arrUserData(intCounter, 2) Debug.Print arrUserData(intCounter, 3) Debug.Print arrUserData(intCounter, 4) Debug.Print arrUserData(intCounter, 5) Debug.Print arrUserData(intCounter, 6) Debug.Print arrUserData(intCounter, 7) Debug.Print arrUserData(intCounter, 8) End If Next |
[ Voor 10% gewijzigd door YellowOnline op 30-08-2012 15:39 ]