[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『リストボックスのクリア』(まー)
ユーザーフォームにテキストボックスやコンボボックス、リストボックスがあります。
コマンドボタンを押してユーザーフォームのデータをシートに転記した後、ユーザーフォームの 中のコントロールを全てクリアしたいと思い、
Dim myCtrl As Control
(データを転記するコード)
'転記が終わったらコントロールをクリア
For Each myCtrl In Me.Controls If TypeName(myCtrl) = "TextBox" Or TypeName(myCtrl) = "ComboBox" Then _ myCtrl.Value = vbNullString Next
ListBox1.Clear
このようにしたのですが、「 ListBox1.Clear」のところで「予期せぬエラーが発生しました」というメッセージが出てしまいます。
最初からリストボックスに何も値が入っていない時はエラーは出ません。 リストボックスにセルを参照してデータが入っているものを、クリアしようとするとエラーになります。
リストボックスのクリアはどのようにしたらよろしいのでしょうか。
エクセル2010です。
ListBox1 に関するイベントプロシジャはないのかな? もしあれば、そのコードをアップしてみたらいかが?
それと
>リストボックスにセルを参照してデータが入っている
これは、具体的にはどういうこと? どのようなコードでデータを【入れているの】?
(ぶらっと)
ListBox1.RowSource = ""
メンバー登録のコードは、提示すべきですよ
ichinose
ぶらっと様
ListBox1に関するイベントプロシージャはありませんが、コマンドボタン1を押した時に「データ」シートから データを読み込みます (「データ」シートは「物件DB」というシートから条件指定で抽出されたデータが記載されるシートで、作業用みたいなものです)
Dim z As Long
With Sheets("データ") z = .Range("B" & .Rows.Count).End(xlUp).Row End With
With ListBox1 .ColumnCount = 3 .ColumnWidths = "100;150;150" .RowSource = "データ!A2:C" & z End With
その後コマンドボタン2でListBox1の中のデータを選択してユーザーフォーム内に表示します。 (「データ」シートのD列に、元の「物件DB」に対応する行番号が入っています)
Private Sub CommandButton2_Click()
Dim lNo As Long Dim ListNo As Long Dim sRow As Long Dim Sh as Worksheet Dim ws as Worksheet
Set ws = ThisWorkbook.Worksheets("データ") Set Sh = ThisWorkbook.Worksheets("物件DB")
lNo = ListBox1.ListIndex If lNo < 0 Then MsgBox "いずれかの行を選択してください" Exit Sub End If
sRow = ListBox1.ListIndex + 2
ListNo = ws.Range("D" & sRow)
TextpDate.Value = Sh.Cells(ListNo, 1).Value TextNo.Value = Sh.Cells(ListNo, 2).Value ComboBukken.Value = Sh.Cells(ListNo, 3).Value
End Sub
この後、ユーザーフォームのデータを更新してコマンドボタン3を押すと更新した内容が「物件DB」シートに転記されるのですが、 更新した後にコントロールをクリアしようとするとリストボックスのエラーがでます…
(まー)
すみません、衝突しました。
ichinose様のコードでリストボックスがクリアできました。
説明が下手ですみませんでした
(まー)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.