Excel Xを使用して、VBAのユーザフォームにコンボボックスを作りましたが、どうしてもコンボボックス内に表示する値の入力方法が分かりません。
WEBや本などで「これ」と思われるものを実験していますが、どれも表示することができません。
できるだけ詳しく教えていただけませんか?
したいことは、
cbocenter というコンボボックスに値を出します。
値は List シートの A2 から A18 に入力済みです。
それと値から選択した値を data シートの J列 に
表示させたいのです。(行の指定はできています)
本当に困ってます。よろしくお願いします。
No.7ベストアンサー
- 回答日時:
#2です。
全容が見えないので何とも言えないのですが、現在アクティブのCellがJ上にある場合、次のコードで放り込めます。
VBAがそこそこわかっておられるようなので、このヒントで組みこんでもらえるのでないでしょうか?
Excelの場合、コンボボックスに1列しか表示できないので、とりあえず、その値を放り込んで残りの値(shinsei hizuke bangou)はlookup関係の関数を用いれば、引っ張ってこられると思います。Accessのコンボだと、コンボに列方向にも値を持たせられるんですが、、、Excel For Macにこれが採用されているなら、これを利用した方が簡単かと思います。
Private Sub ComboCenter_Change()
'Private Sub ComboCenter_Click() ← Click イベントでもいいかも
Dim Num As Integer
Num = ComboCenter.ListIndex
If ActiveCell.Column = 10 Then
ActiveCell = Worksheets("List").Cells(Num + 2, 1)
End If
End Sub
本当にたびたびありがとうございました。
教えていただいた上記の記述は結局どうしていいか分からなかったのですが、「次へ」で他のテキストボックスをクリアにする記述をしたら、なんと次々にデータを入力してもちゃんと次の新しい行に転記されるようになりました。(なんでだろ、不思議...)
というわけで、最後の難問だったコンボボックスが解決できて、完成でしました。本当に長々おつきあいいただき、ありがとうございます!!
No.6
- 回答日時:
#2です。
> UserFormのGeneralの中で上記の構文を入力して
こういう質問をされると言うことは、WinとMacで仕様が違うのかな?
とりあえず、下のコードをまんま貼ってもらうと
----------------------------------------------------------------------
Private Sub UserForm_Initialize()
Dim i As Long
For i = 2 To 18
ComboCenter.AddItem Sheets("List").Cells(i, 1)
Next i
End Sub
----------------------------------------------------------------------
ってな感じで 仕切られて表示されないですか?こうなっていればそれで動くと思います。
一度、デバッグのステップインでどんな値が Sheets("List").Cells(i, 1) に入っているか見てもらえませんか?
それとうっかりしていましたが、、UserFormを使うとUserForm起動時にフォーカスがワークシートの方へ移れないので、2つ目からのデータ入力位置のCellが指定できませんね。規則性があるのならコードで制御できますが、任意の場所へとなるとその都度、UserFormを閉じないといけません。
このあたり、どうされますでしょうか?
それを考えると コントロールツールボックスのコンボボックス の方が現実的な感じがします。
この回答への補足
いえいえ、単に私が分かっていないだけなんです、すいません!
ユーザーフォームに「次へ(tsugi)」というコマンドボタンを作ってありまして、コード欄には、tsugi-Click でテキストボックスやオプションボタンの内容をdataシートに転記するようにしてあります。以下のような感じです。
ここに教えていただいたコードを貼ったところ、無事コンボボックス内に項目が表示されました!!
で...、コンボボックスで選択した内容を data シートの J列に表示させるにはどうしたら良いのでしょう?
本当にお手間を撮らせてしまってすいません。
-----------------------------------------------------
Private Sub tsugi_Click()
Worksheets("date").Select
Range("A65536").End(xlUp).Offset(1, 0).Select
With ActiveCell
.Offset(0, 0) = txtshinsei.Text
.Offset(0, 1) = txthizuke.Text
.Offset(0, 4) = txtbangou.Text
If touroku.Value = True Then
.Offset(0, 2) = "登録"
ElseIf sakujyo.Value = True Then
.Offset(0, 2) = "削除"
ElseIf henkou.Value = True Then
.Offset(0, 2) = "変更"
End If
No.5
- 回答日時:
#2です。
' もし、値がプロパティーで設定できなかったら、
' 次のコードで設定してください。
' イベントは別のイベントでも可能です。
Private Sub UserForm_Initialize()
Dim i As Long
For i = 2 To 18
ComboCenter.AddItem Sheets("List").Cells(i, 1)
Next i
End Sub
この回答への補足
ありがとうございます、UserFormのGeneralの中で上記の構文を入力して、実際に選択した値を表示するシート(data)のworksheet-SelectionChangeに、Public pRow As Long...以下の構文を書けば良いのでしょうか。
試してみたのですが、やはりコンボボックスに値が表示されないのです。
他に方法はありませんか? よろしくお願いします。
No.4
- 回答日時:
#2です。
> できるだけ詳しく教えていただけませんか?
ということでしたので。。。
Listの値は単にプロパティーで設定すれば、どちらの場合でもOKです。
で、、どの行かの指定は #2にあるように
Worksheet_SelectionChange が発生した時に その Row(行)の値をPublic 変数(myRow)に代入してあげるのです。そうしてやれば、どこからでも利用できます。
で、、後、コンボボックスで値を取得した後、Cells(myRow + 修正値,10) の位置に目的の値を表示してやればいいのです。
今回の場合は。。。
表示先 = Worksheets("list").Cells(myRow, 10)
取得先 = Worksheets("list").Cells(Num + 2, 1) となります。
Numはコンボボックスの選択された値のIndex値です。
後はコントロールボックスのコンボボックスなら#2のコード通り、#1さんの言うフォームのコンボボックスであれば、そのコンボボックスのChageかGotFocusのイベントに先のコードを書けばいいと思います。
No.3
- 回答日時:
良くお判かりのようですが、下記では、どこが質問を満たさないか、あれば補足してください。
dataシートにおいて、メニューバーの余白部でクリック。コントロールツールボックスをクリックし
コンボボックスのアイコンをクリックし
コンボボックスを貼りつけます。
その中で右クリックして出てくるウインドウで、プロパ
ティをクリック。
ListFillRangeの項目行を探し右欄に
LIST!A2:A18といれてウインドウを閉じます。
そのコンボボックスの中でダブルクリックし
Private Sub ComboBox1_Change()
End Sub
が出てきます。
その中間に
ActiveCell = ComboBox1.List(ComboBox1.ListIndex)
を入れて、デザインモードを脱します。
dataシートにおいて、コンボの▼をクリックしてその中の1つをクリックすると、アクチブセルに、選んだアイテムがセットで来ます。
No.2
- 回答日時:
' 反対にコントロールツールボックスのコンボボックス の方だとしたら
' コンボボックスの編集が可能な状態にします。
' コンボボックス右クリック
' ListFillRange に 表示したい値のあるシート名とCell範囲を指定します。
' 例:List!A2:A18
' そして、VBAエディターを開いて対象シートに次のコードをコピペしてください。
Public myRow As Long
'''Public myCol As Long
Private Sub combocenter_Change()
Dim Num As Integer
Num = combocenter.ListIndex
Worksheets("list").Cells(myRow, 10) = _
Worksheets("list").Cells(Num + 2, 1)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
myRow = Target.Row
'''myCol = Target.Column
End Sub
この回答への補足
ありがとうございます、使用しているのはユーザーフォームのツールボックスにあるコンボボックスです。
やはりプロパティには「ListFillRange」欄はないので、コードで書くしかないようなのです。
よろしくお願いします。
No.1
- 回答日時:
コントロールツールボックスのコンボボックスではなく、フォームのコンボボックスですね?
それなら作成したコンボボックスを右クリック。
コントロールの書式設定
「コントロール」タブ
「入力範囲」 にListのシートのA2からA18を指定。 (このセル範囲の値が、ドロップダウン ボックスに表示されます。)
「リンクするセル」に一覧で選択された項目を示す値が返されるセルを指定します。
仮に3番目を指定すると3がかえります。
数式でこの数値を使って、一覧で選択された項目に基づいた結果を返すことができます。
なお「ドロップダウン リストの行数」でドロップダウン リストに表示される行数を表します。
お役に立ちましたか?
この回答への補足
ありがとうございます、プロパティ内のRowSourseのことですね。残念ながらMac版にはおっしゃる欄がないので悩んでいたのです。
補足日時:2003/10/18 18:58お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
白血球が多いとどんな心配があ...
-
知能テストは、今。 義務教育課...
-
精液の落とし方を教えてください
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
リンク先のファイルを開かなく...
-
エクセルで数式の答えを数値と...
-
勃起する時って痛いんですか? ...
-
検便についてです。 便は取れた...
-
イタリアから帰国する際、肉製...
-
図書カードの使えるお店を教え...
-
エクセルでエラーが出て困って...
-
甲状腺が腫れているが血液検査...
-
エクセルのラベルの値(文字列...
-
小数点以下を繰り上げたものを...
-
MIN関数で空白セルを無視したい...
-
EXCELの条件付き書式で数式を空...
-
エクセル指定した範囲からラン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
白血球が多いとどんな心配があ...
-
勃起する時って痛いんですか? ...
-
精子が黄色?
-
検便についてです。 便は取れた...
-
これって喉仏ですか? 私は女性...
-
小数点以下を繰り上げたものを...
-
甲状腺が腫れているが血液検査...
-
精液の落とし方を教えてください
-
エクセル指定した範囲からラン...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
精子に血が・・・
-
エクセルのラベルの値(文字列...
-
イタリアから帰国する際、肉製...
-
ある範囲のセルから任意の値を...
-
リンク先のファイルを開かなく...
-
中出しをするとお腹が痛い・・・。
-
MIN関数で空白セルを無視したい...
おすすめ情報