2017-03-09 1 views
0

Je sais qu'il est si naïf de demander cela, mais je suis coincé dans elle et aucune solution trouvée sur internet. J'ai un combobox dans lequel j'ai 4 colmns 3 d'entre eux sont invisibles et l'un est. Dans la colonne visible je voudrais afficher la valeur de pname (une chaîne) sur la charge de formulaire. J'ai essayé:Attribuer une valeur à une combobox multi-colonne vba sur la charge

cboPlanName.value=pname 
cboPlanName=pname 
cboPlanName.text=pname 

Avec les deux premières lignes de la combobox Prèsentoir rien que la propriété .text il me donne un errror (2135 propriété en lecture seule impossible de le définir).

Que suggérez-vous? Merci d'avance.

+0

Où avez-vous mis dudit code, dans 'Form_Load'? –

+0

Dans ** sub Form_Open ** @Nathan_Sav – Marwan

+0

pname a-t-il une valeur, est-ce dans la liste, limite à la liste, etc.? pouvez-vous montrer un peu plus dans votre code. –

Répondre

0

Vous devez ajouter un élément à un combobox comme celui-ci:

cboPlanName.AddItem pname 

Si pname est un tableau de valeurs alors

For Each pnameVal in pname 
    cboPlanName.AddItem pnameVal.Value 
Next pnameVal 

Mise à jour des commentaires:

Vous allez besoin d'ajouter pname à un public plutôt que Dim, en haut de votre userform entrez Public pname as string (ou juste Public pname s'il contient plus qu'une simple chaîne) ou si la valeur provient d'un module Sub ina alors vous devrez ajouter Public pname as string en haut du module plutôt que le userform, cela permettra de passer la variable à un autre Sub sans perdre sa valeur

+0

Quand j'ajoute la valeur à la liste cela me donne une erreur: La source d'origine de propriété doit être mise à la valeur Lister les valeurs pour utiliser cette méthode. Il n'est pas possible d'afficher la valeur sans l'ajouter à la liste? @ Mr.Burns – Marwan

+0

Au début du Sub ou juste avant que vous essayez d'ajouter 'pname' à la liste déroulante, entrez ce' Debug.Print pname' et faites-moi savoir quelle valeur est retournée ('Crtl + G' pour voir quelle valeur est renvoyé) @Marwan –

+0

Il donne la valeur de valeur désirée ** test **. J'ai essayé d'écrire le code sous la forme Form_Activate() mais il semble que le code n'excède pas et quand je l'écris dans Sub Form_Open() il se bloque. @ Mr.Burns – Marwan

1

Bon, ben j'ai enfin trouvé la solution en sachant que c'est une combobox de 4 colonnes, dont 3 sont cachées. Ce que j'ai fait est que j'ai fait une boucle à travers les valeurs de la colonne montrée de la combobox et quand la valeur correspond à la chaîne (pname), je place la valeur sélectionnée de la combobox à la valeur qui correspond, en d'autres termes les valeurs sont dans la liste, le code recherche la valeur égale à la chaîne (pname) et la sélectionne.

For j = 0 To cboPlanName.ListCount - 1 
     IF cboPlanName.Column(1, j) = pname Then 
     Me.cboPlanName = cboPlanName.ItemData(j) 
     End If 
    Next j 

Et merci pour ceux qui ont essayé d'aider, je l'apprécie vraiment :)