Vullen ListFillRange ActiveX combobox geeft melding 'typen komen niet overeen'

Status
Niet open voor verdere reacties.

ML71

Gebruiker
Lid geworden
10 mrt 2006
Berichten
70
In mijn macro bepaal ik een range, genaamd MyG2Range. Dit is een geldige range, bij de opdracht MyG2Range.select wordt het hele gewenste gebied netjes geselecteerd. nu wil ik deze range in een ActiveX combobox genaamd cbGrafiek2 zetten, maar bij het uitvoeren krijg ik de melding 'typen komen niet overeen'. Klaarblijkelijk doe ik dus iets fout, maar ik kom er maar niet achter wat. Wie weet raad?

Code:
Sub combo_vullen()

 Dim MyG2Range As Range, rstart As Integer, reind As Integer

 rstart = 13
 reind = rstart + Cells(1, 1)
 Set MyG2Range = Range(Cells(rstart, 10), Cells(reind, 10))
 
 cbGrafiek2.ListFillRange = MyG2Range

End Sub

(in Cel A1 staat een integere waarde)
 
Ik zou met .List werken, maar dat terzijde.
Code:
cbGrafiek2.ListFillRange = MyG2Range.Address
 
Hallo Harry,

Dank voor de suggestie. Maar ik krijg het toch niet draaiende, bij het instellen van de ListFillRange wordt nu aangegeven 'Object vereist' en die snap ik niet helemaal, aangezien de combobox wel vindbaar is als object...
Bijgevoegd het bestand waarmee ik dit probeer.
Bekijk bijlage combobox.xlsm

en je gaf aan dat je met .List zou werken, kun je dat uitleggen?
 
In jouw code.

MyG3Range.Address ipv. MyGD3Range.Address

De .List methode:
Maak de .ListfillRange leeg in de eigenschap van de combobox.

Code:
Sub vullen()
 cbGrafiek3.List = Range("A1:A22").Value
End Sub
 
Hallo Harry,

dank voor je feed-back. Ik heb het inderdaad werkend in dit bestand maar in een ander bestand (zie bijlage) werkt het echter niet. Hij blijft zeuren dat er een object vereist is en ik zie echt niet waar dit vandaan komt, voor zover ik kan zien kloppen alle objectnamen met de code. Ik hoop dan ook dat je me kunt vertellen wat hier misgaat?

Bekijk bijlage testbestand grafieken.xls

alvast bedankt!
Mark
 
1. er staat in het hele werkboek niet 1 combobox (controleer via de VBEditor)
2. als je in een macromodule verwijst naar een cel moet je ook verwijzen naar het werkblad dat die cel bevat, anders krijg je onvoorspelbare uitkomsten, afhaneklijk van welk werkblad 'aktief' is.
3. Beter kun je die code zetten in de codemodule van het werkblad, dat de combobox bevat.
 
1. er staat in het hele werkboek niet 1 combobox (controleer via de VBEditor)
Dit vind ik wel gek, aangezien 'boven op' iedere grafiek op het 'Chart' tabblad een ActiveX combobox heb toegevoegd, die zou ik dan toch ook gewoon moeten kunnen aansturen? Daarnaast staat er in A4 ook nog een ActiveX combobox. Die kunnen toch niet zomaar onzichtbaar worden voor VBA?

2. als je in een macromodule verwijst naar een cel moet je ook verwijzen naar het werkblad dat die cel bevat, anders krijg je onvoorspelbare uitkomsten, afhaneklijk van welk werkblad 'aktief' is.
Dit weet ik, in de uiteindelijke code wordt het betreffende tabblad eerst geactiveerd.

3. Beter kun je die code zetten in de codemodule van het werkblad, dat de combobox bevat.
Met de uiteindelijke code worden behoorlijk wat bewerkingen uitgevoerd, waaronder het ophalen van nieuwe gegevens, het aanpassen van de grafieken en dus ook, althans dat is de bedoeling, het aanpassen van de ranges van de comboboxen waarmee periodes voor de grafieken 2 en 3 kunnen worden geselecteerd. Vandaar dat ik dat in één module 'Verwerken' heb ondergebracht.
 
Klik er maar eens op in de ontwerpstand en probeer de eigenschappen te benaderen: dat gaat niet.
Of kijk in de objectbrowser van het VBProjekt: geen comboboxen.

Je kunt in VBA alleen de naam uitlezen met:

Code:
msgbox sheets("Chart").Oleobjects("cbgrafiek2").name[/cpde]

Maar daar blijft het dan ook bij.

Het is overigens niet slim een werkblad een naam te geven die in VBA als apart object gedefinieerd is (dat zou deze gang van zaken kunnen verklaren).
 
Ik ben van voren af aan begonnen in een nieuw bestand en heb daar de sheets niet zelf een objectnaam gegeven en het lijkt nu inderdaad te werken. Dank voor de hulp!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan