Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


30988 / 76738 ←次へ | 前へ→

【51009】Re:コンボボックスを空白にする方法
発言  ichinose  - 07/8/24(金) 20:31 -

引用なし
パスワード
   ▼Tsuyo さん:
こんばんは。

>
>>不具合って再現できて何ぼものですからね!!
>そうですね。質問時に状況をどこまで説明すれば良いかいつも迷います。
>コードを最初から最後まで載せてしまったら、かえって訳が分からなくなるのではないかとか、教えて貰うからにはポイントを絞らナければと逆の方向に気を使ってしまいました。

私は、問題が再現できる最も簡単な事例を作成する事を考えますよ!!
それは、問題になっているブックをいったん離れて、新規ブックにて
問題を再現することを考えますけどねえ!!
さらに一人でも多くの方に再現してもらえるように手順書を記述します。


>
>>この場合は、標準モジュールに
>>
>>Sub test()
>>  Worksheets("sheet1").ComboBox1.ListFillRange = ""
>>End Sub
>>
>>上記のtestで対応してください。
>testしてみたのですが、確かにエラーは出なくなりましたが、

testの実行でコンボボックスに登録された内容がクリアされなっかたのでしょうか?
Excel2002(Excel2000でも確認)で前回の投稿どおりの手順で行うと
記述したとおりにエラーが発生し、記述したとおりにリストがクリアされますけどね!!

因みに
Worksheets("sheet1").ComboBox1.Value = ""



Worksheets("sheet1").ComboBox1.ListFillRange = ""

とでは、結果は違いますよ!!

Excelのバージョンは何ですか?

もう一度新規ブックにて、
今度は全てをVBAで行ってしまいます。

標準モジュールに

'================================================
Sub main()
  Dim cmb As OLEObject
  With Range("d3:f3")
    Set cmb = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
        Link:=False, DisplayAsIcon:=False, _
        Left:=.Left, Top:=.Top, _
        Width:=.Width, Height:=.Height * 2)
    End With
  MsgBox "ready"
  ActiveSheet.Range("a1:a5").Value = [{"a";"b";"c";"d";"e"}]
  With cmb
    .ListFillRange = ActiveSheet.Name & "!a1:a5"
    .Object.DropDown
    MsgBox "セルA1:A5の内容をコンボボックスに設定しました"
    On Error Resume Next
    .Object.Clear
    If Err.Number <> 0 Then
     MsgBox "clearメソッドを実行したところ・・  " & vbCrLf & Err.Description
     End If
    .Object.ListIndex = 3
    MsgBox "dを選択しました"
    .Object.Value = ""
    .Object.DropDown
    MsgBox "Value=""""の実行で dは消去されてもリストは消えません"
     
   
    .ListFillRange = ""
    .Object.DropDown
    MsgBox " .ListFillRange = """"の実行で リストが消去されました"
    .Delete
    End With
  
End Sub

上記のmainを実行してみてください。

私が実行した限りでは・・・、

・セルD3からF4の辺りにコンボボックスを作成し、「Ready」というメッセージ表示

・OKボタンのクリックでA1からA5にリストデータを作成後、コンボボックスに登録にリストを登録します。

・登録リストが表示された状態で「セルA1:A5の内容をコンボボックスに設定しました」というメッセージが表示されます。OKをクリックしてください。

・Cmb.Object.clearを実行します。エラーが発生していれば
「clearメソッドを実行したところ・・  
予期せぬエラーが発生しました。」というメッセージが表示されます。
OKボタンのクリックしてください。

・コンボボックスに登録リストの中の「d」が表示され、
「dが選択されました」というメッセージが表示されます。
OKボタンのクリックしてください。

・Value=""が実行されます。
コンボボックスから「d」は消去されますが、最初に登録したA1:A5のリストは
消えません。「Value=""の実行で dは消去されてもリストは消えません」というメッセージが表示されます。
OKボタンのクリックしてください。

・ListFillRange = ""が実行されます。
今度は、コンボボックスに登録されたA1:A5の内容がクリアされます。
「.ListFillRange = ""の実行で リストが消去されました」というメッセージが表示されます。
OKボタンのクリックしてください。


・最後に作成したコンボボックスを削除して終わります。

Activexコントロールの動的な作成のせいなのか?多少残像が残ったりもしますが、
概ねこのような動作になります。

試して結果を教えてください。
1 hits

【50923】コンボボックスを空白にする方法 Tsuyo 07/8/22(水) 14:57 質問
【50924】Re:コンボボックスを空白にする方法 Tsuyo 07/8/22(水) 15:02 質問
【50925】Re:コンボボックスを空白にする方法 ぱっせんじゃー 07/8/22(水) 15:03 発言
【50928】Re:コンボボックスを空白にする方法 Tsuyo 07/8/22(水) 15:52 質問
【50930】Re:コンボボックスを空白にする方法 neptune 07/8/22(水) 16:49 回答
【50942】Re:コンボボックスを空白にする方法 Tsuyo 07/8/22(水) 23:28 質問
【50948】Re:コンボボックスを空白にする方法 ichinose 07/8/23(木) 8:01 発言
【50965】Re:コンボボックスを空白にする方法 [名前なし] 07/8/23(木) 17:23 質問
【50966】Re:コンボボックスを空白にする方法 kobasan 07/8/23(木) 18:33 回答
【50967】Re:コンボボックスを空白にする方法 ichinose 07/8/23(木) 18:34 発言
【50980】Re:コンボボックスを空白にする方法 Tsuyo 07/8/24(金) 9:34 質問
【51009】Re:コンボボックスを空白にする方法 ichinose 07/8/24(金) 20:31 発言
【51023】Re:コンボボックスを空白にする方法 Tsuyo 07/8/25(土) 22:42 質問
【51029】Re:コンボボックスを空白にする方法 ichinose 07/8/26(日) 0:54 発言

30988 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free