こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VB リストボックス選択項目が取得できない。

エクセルのユーザフォームで日程表を作っています。
下記ListBox1で会議名称だけ表示させています(チェックボックス無し)。
Private Sub ListBox1_click()で選択さした項目を、ここではあらかじめ結合したF5、F6セルに入力させたいのですが、なにも入力されません。
また、ウォッチウインドゥで cとListIndexとListBox1.Valueを設定し、実行後に見るとListIndex 2、ListBox1.Value : "責任者会議"とそれなりに表示されますが、cはEmptyです。
なぜF5セルと、併せてウォッチウインドゥに変数cが設定されないのでしょうか。教えてください。
Excel 2007 VB6.5です。

'行事入力一覧
Private Sub UserForm_Initialize()
With ListBox1
.AddItem ""
.AddItem "サービス課会議"
.AddItem "責任者会議"
.AddItem "安全衛生委員会"
.AddItem "ISO委員会"
 End With
End Sub
---------------------------------
Private Sub ListBox1_click()

MsgBox ("選択した行事名を「行事等」欄へコピーします。" _
& vbCrLf & vbCrLf & "コピーしたい日付の「行事等」欄をクリックしてください。")

Dim ListIndex As Long '選択番号
Dim c As Variant
ListIndex = ListBox1.ListIndex
With ActiveSheet
For i = 0 To -1
  c = ListBox1.Value
Range("F5").Value = ListBox1.Value
’ Range("F5:F6").MergeCells.Value = ListBox1.Value
’ Cells(5, 6).Value = ListBox1.Value
Next i
 .Range("G5").Value = "-4A56" 'Test G5とG6の結合セルだが入力される。
End With
Stop
     ListBox1.Value = ""
      Unload Me
End Sub

投稿日時 - 2011-09-20 01:25:03

QNo.7022359

すぐに回答ほしいです

質問者が選んだベストアンサー

その for 文は何の目的であるのでしょうか??for 分の初期値より終値が小さいので、中は通っていませんよ。その for 文を実現するなら、

for i=0 to -1 step -1

です。

投稿日時 - 2011-09-20 03:48:39

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

表示された日付の行で「行事」の列に会議の種類を選択表示させるだけのことでしたらエクセルでは「データの入力規則」から「リスト」で設定することができます。
マクロを使った作業はかえって操作を難しくします。書かれたマクロではListBox1の値をF5セルに書くだけのことです。
Forなどを使って処理することは全く必要がありませんね。Forを使ったケースはリスト形式が2列になっている場合などにそれぞれを別のセルに表示させるような場合で、For i=0 To .ListCount -1 のように使われますが、ここではその必要も全くありません。For の中で使われている i の意味がよく理解されていないままに使われています。c の値が空白のままであるのもそのためです。

投稿日時 - 2011-09-20 07:02:40

お礼

ご指摘ありがとうございました。「データの入力規則」から「リスト」での設定を試みました。ただ、入力先が縦書きなので、選択項目の幅が狭すぎ、見た目が解りくく、この方法は断念しました。大変勉強になりました。

投稿日時 - 2011-09-21 23:27:12

あなたにオススメの質問