2017-03-09 15 views
0

私はそれを尋ねるのがとても素朴であることを知っていますが、私は彼女にこだわっていて、インターネット上には解決策が見つかりません。私は4つのcolmnsを持っているコンボボックスを持っているそれらの3つは見えないと1つです。表示されるcolomnでは、私はフォームのロード時にpname(文字列)の値を表示したいと思います。 私が試した:最初の2行で複数列のコンボボックスvbaに値を割り当てます。

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

をコンボボックスには何もdiplaysませんが、.textのプロパティで、それは(2135プロパティは読み取り専用でそれを定義することは不可能)私errrorを与えます。

あなたはどう思いますか? ありがとうございます。

+0

あなたが入れているが、コードは 'Form_Load'で、言いましたか? –

+0

**サブフォーム_Open ** @ Nathan_Sav – Marwan

+0

では、pnameに値がありますか?それはリスト内にありますか、リストに制限されていますか?あなたのコードにもう少し詳しく見せてください。 –

答えて

0
あなたはこのようなコンボボックスに項目を追加する必要があり

pnameは、値の配列である場合

cboPlanName.AddItem pname 

その後、

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

コメントからの更新:

あなたでしょうあなたのuserformの先頭にDimではなくpublicにpnameを追加する必要があります。Public pname as string(単なる文字列以上のものがある場合はPublic pname)、値がSub inaモジュールから来た場合は、userformではなく、モジュールの先頭にPublic pname as stringを追加する必要があります。これにより変数が渡されますその値を失うことなく別のSubに返す

+0

私は、リストに値を追加するときに私にエラーが発生します:プロパティの起源ソースは値に設定する必要がありますこのメソッドを使用する値をリストします。値をリストに追加しないで表示することはできません。 @ Mr.Burns – Marwan

+0

Subの開始時またはコンボボックスに 'pname'を追加する直前に、この' Debug.Print pname'を入力し、返される値を教​​えてください( 'Crtl + G') @Marwan –

+0

これは、値が欲しい値を与える**テスト**です。 Form_Activate()の形式でコードを書き込もうとしましたが、コードが実行されていないようで、Sub Form_Open()に書き込むとクラッシュします。バーンズ – Marwan

1

私は最終的にそれが4列のコンボボックスであることを知っている解決策を見つけました。私が行ったことは、コンボボックスの表示された列の値をループし、値が文字列(pname)と一致したときに、コンボボックスの選択値を一致した値、つまり値がリストにあれば、コードは文字列(pname)と等しい値を探し、それを選択します。

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

そして、助けようとした人のためのおかげで、私は本当に感謝:)

関連する問題