[Excel] probleem met object naar functie

Pagina: 1
Acties:

  • Buzzman
  • Registratie: Juni 2000
  • Niet online
hoi,

ik heb in mijn excel worksheet een listbox staan.. deze heet listbox1.

Nu heb ik het volgende probleem. Deze listbox het ik nodig in een functie (dit is de makkelijkste manier).

Nu had ik het volgende al gemaakt als funtie in VB:
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
26
27
28
29
30
31
32
33
34
35
36
Dim ImpactArray(1 To 20), planningArray(1 To 20) As Integer


Function Bepaal_totaal(ImpactArray, ListboxPlanning As listbox) As String

    Dim Check, Sub_Plan, i
    Dim Result As String
    
    Check = True: Sub_Plan = 1:  Result = ""
    i = 0:
    
    Do While Not IsEmpty(ListboxPlanning.Column(0, i))
    If ListboxPlanning.Selected(i) Then
      planningArray(i) = ListboxPlanning.Column(0, i)
    End If
    i = i + 1
    Loop
   
   
    Do    ' Outer loop.
      Do While Not IsEmpty(planningArray(Sub_Plan))  ' Inner loop.
        If ImpactArray(planningArray(Sub_Plan)) = "x" Then
            Result = "x"
            Check = False    ' Set value of flag to False.
            Exit Do    ' Exit inner loop.
        Else
            Sub_Plan = Sub_Plan + 1
        End If
      Loop
        If Result = "" Then
           Check = False
        End If
    Loop Until Check = False
    
    Bepaal_totaal = Result
End Function

En in mijn excel worksheet staat het volgende:
code:
1
=Bepaal_totaal('Impact analyse'!D2:W2,"Hulpsheet planning.forms.Listbox1")

Alleen dit werkt niet echt :{

Het object wordt niet doorgegeven aan de functie.

  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Op vrijdag 19 april 2002 14:20 schreef Buzzman het volgende:

[..]

En in mijn excel worksheet staat het volgende:
code:
1
=Bepaal_totaal('Impact analyse'!D2:W2,"Hulpsheet planning.forms.Listbox1")

Alleen dit werkt niet echt :{

Het object wordt niet doorgegeven aan de functie.
Dat komt omdat je het object als string doorgeeft... haal die quotes maar eens snel weg! ;)

  • Buzzman
  • Registratie: Juni 2000
  • Niet online
Op vrijdag 19 april 2002 14:58 schreef TeknoGecko het volgende:

[..]

Dat komt omdat je het object als string doorgeeft... haal die quotes maar eens snel weg! ;)
Ehm ja.. dat is maar 1 manier hoe ik dat heb opgeschreven.. :o

Zonder quotes heb ik natuurlijk allang geprobeerd, maar dat werkt ook niet ;)

btw.. die bovenste code staat in een module..

  • Buzzman
  • Registratie: Juni 2000
  • Niet online
*subtiele schop* ;)

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09-09 16:14

Crazy D

I think we should take a look.

Bij mijn weten kun je niet vanuit een sheet een form aanspreken. Andersom wel trouwens, dus ik weet niet precies wat je wilt doen, misschien kun je het omdraaien, en bv een button op je sheet plaatsen, en in de button_click event (een macro) je functie aanroepen. In die macro kun je vrij eenvoudig 1 cell aanspreken om een waarde te zetten (en uiteraard een andere cell uitlezen van welkje je de waardee mee wilt geven aan je functie). En je kan dan rechtstreeks formnaam.objectnaam benaderen.

Exact expert nodig?


  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Ik heb even lopen puzzelen en het volgende gevonden.
Als je de naam van de listbox en eventueel de worksheetnaam als string meegeeft aan de functie dan kan je de properties van de listbox benaderen via
code:
1
Worksheets("<sheetnaam>").oleobjects("<objectnaam>").object.<propertynaam>

Voor objectnaam moet je dan niet de naam gebruiken die je in het properties window kan zetten, maar de naam die je via de "Name box" kan zetten (dat comboboxje links in je formule balk)

Dit geldt dus voor listboxen direct op het Excelsheet en niet op een VBA form!

  • Buzzman
  • Registratie: Juni 2000
  • Niet online
K erg bedankt allebei :)

ik heb alleen niet het excel sheetje thuis liggen, die staat nog op mijn werk :o

Maar ik denk dat ik hier voldoende aan heb om ermee verder te gaan :)
Pagina: 1