Eigen Excelfunctie (VBA) blijft hangen

Pagina: 1
Acties:

  • bthv
  • Registratie: Oktober 2006
  • Laatst online: 13-07 06:19
Ik heb een leuk VBA scriptje geschreven, dacht ik, maar hij blijft steeds hangen

code:
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
Public Function ZoekLeerlingenBijKlas(Klas As String, Doelbereik As Range) As Integer
  Application.Volatile
  Dim Bereik As Range
  Dim Origin As String
  Origin = ActiveSheet.Name
  With Worksheets("DataBlad")
    .Range("A1").AutoFilter Field:=5, Criteria1:=Klas
    Set Bereik = .AutoFilter.Range
    Bereik.Select
    Set Bereik = Bereik.Offset(1, 0).Resize(Selection.Rows.Count - 1, 1)
    Bereik.Select
    Selection.Copy
  End With
  Sheets(Origin).Select
  Range(Doelbereik).Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  ZoekLeerlingenBijKlas = Selection.Rows.Count
  Worksheets("DataBlad").Range("A1").AutoFilter Field:=5
  Sheets("DataBlad").Select
  Sheets("DataBlad").AutoFilterMode = False
  Range("A1").Select
  Sheets(Origin).Select
  Range(Doelbereik).Select
  ActiveSheet.Name = Klas
End Function 'ZoekLeerlingenBijKlas


Hij blijft haken tussen regel 7 en 12, meestal op regel 9, maar ik kan niet ontdekken wat er fout is, alles lijkt te werken... :?

Ben het spoor bijster, iemand (toevallig) een idee?

  • lier
  • Registratie: Januari 2004
  • Nu online

lier

MikroTik nerd

bthv schreef op dinsdag 03 juli 2007 @ 13:38:
Ik heb een leuk VBA scriptje geschreven, dacht ik, maar hij blijft steeds hangen

Hij blijft haken tussen regel 7 en 12, meestal op regel 9, maar ik kan niet ontdekken wat er fout is, alles lijkt te werken... :?

Ben het spoor bijster, iemand (toevallig) een idee?
Debuggen van je code zal vast meer info geven. Al geprobeerd (ligt natuurlijk wel heel erg voor de hand...) ?

[ Voor 49% gewijzigd door lier op 03-07-2007 13:43 ]

Eerst het probleem, dan de oplossing


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15-07 20:48

Janoz

Moderator Devschuur®

!litemod

bthv schreef op dinsdag 03 juli 2007 @ 13:38:
Ben het spoor bijster, iemand (toevallig) een idee?
De enige tip die ik je kan geven is een database-programma gebruiken ipv een spreadsheet-programma. Dat werkt namelijk wat prettiger wanneer je een database aan het implementeren bent.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • bthv
  • Registratie: Oktober 2006
  • Laatst online: 13-07 06:19
lier schreef op dinsdag 03 juli 2007 @ 13:42:
[...]

Debuggen van je code zal vast meer info geven. Al geprobeerd (ligt natuurlijk wel heel erg voor de hand...) ?
Ja, debuggen natuurlijk al geprobeerd, geeft aan dat er een fout zit, maar niet waar, en hoe...
Janoz schreef op dinsdag 03 juli 2007 @ 13:45:
[...]

De enige tip die ik je kan geven is een database-programma gebruiken ipv een spreadsheet-programma. Dat werkt namelijk wat prettiger wanneer je een database aan het implementeren bent.
het is de bedoeling 2 spreadsheets samen te voegen, ze zijn al geimporteerd, dat gaat goed, geen fouten daar, maar nu wil ik een bepaald bereik uit de ene sheet in de andere kopieren en pasten afhankelijk van de aangegeven klas. Acces, hoe leuk ook, is in dit geval overkill, omdat het in een spreadsheet eenvoudiger moet kunnen....

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15-07 20:48

Janoz

Moderator Devschuur®

!litemod

Een spreadsheet is niet een eenvoudige variant van een database. Een spreadsheet is gewoon een heel ander type programma dan een database. Dat de halve wereld een spreadsheet programma misbruikt voor gegevens opslag doet daar niks aan af. De bewerking die je hier op een redelijk foutgevoelige manier probeert te implementeren met een blijkbaar niet werkend stuk code van 25 regels kan in access op een native 1 regelige manier.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

het probleem is dat je bewerkingen uitvoert die, by design, binnen een werkbladfunctie niet toegelaten zijn (zoals het toepassen van een autofilter, het selecteren van een bereik (op een ander blad) enz.
je kan proberen deze bewerkingen naar een sub te verplaatsen en deze sub vervolgens vanuit de functie aanroepen, maar ik heb niet uitgeprobeerd of dit effectief werkt, dus laat maar weten wat het resultaat os.

edit:zie ms knowlegde base artikel voor een beschrijving van de berperkingen bij het gebruik van een excel udf.
Description of limitations of custom functions in Excel

[ Voor 15% gewijzigd door Verwijderd op 04-07-2007 17:02 ]


  • bthv
  • Registratie: Oktober 2006
  • Laatst online: 13-07 06:19
Beide bedankt voor de tips, Ik ga er even naar kijken of ik het vanuit een (public) sub kan draaien en zo de gevraagde bewerkingen uit kan voeren.

De rede dat we express geen access gebruiken is trouwens ook dat we op beide sheets veel berekeningen met excel-specifieke formules doen, die werken onder access niet, en anders zou ik juist daarvoor zelf formules moeten gaan schrijven, nu hoef ik er maar 1 te schrijven, anders een stuk of 10 ;)

  • bthv
  • Registratie: Oktober 2006
  • Laatst online: 13-07 06:19
nog even als opmerking, die autofilter werkt juist prima, da's het probleem niet, het probleem is de selectie die het autofilter tevoorschijn tovert te selecteren, en niet alles wat in de lijst staat...
Pagina: 1