|
▼ichinose さん:
おはようございます。
初心者なもので参考にさせて頂いております。
>Userform1のモジュールに
>
>'========================================================
>Dim rng As Range 'リストデータのセル範囲
>Dim ev As Boolean 'Changeイベントの有無フラグ True--発生可能 False---発生不可
>'========================================================
>Private Sub UserForm_Initialize()
> ComboBox1.Style = fmStyleDropDownCombo '←これは事前設定でよいです
> Set rng = Range("a1", Cells(Rows.Count, 1).End(xlUp))
> ev = True
>End Sub
>'===============================================================
>Private Sub ComboBox1_Change()
> Dim svtext As String 'コンボボックスのTextの内容の一時保存
> If ev = False Then Exit Sub
> With ComboBox1 '←適当な名前に変更すること
> svtext = .Text
> If .Text <> "" Then
> If rng.Count = 1 Then
> If rng.Value = "" Then
> .Clear
> Exit Sub
> End If
> End If
> myvalue = Evaluate("transpose(if(mid(" & rng.Address & ",1," & Len(.Text) & ")=""" _
> & .Text & """," & rng.Address & ",""" & Chr(&HFF) & """))")
> If UCase(TypeName(myvalue)) <> UCase("variant()") Then
> myvalue = Array(myvalue)
> End If
> myvalue = Filter(myvalue, Chr(&HFF), False)
> '↑あり得ない文字を使用してフィルタをおこなう
> ev = False
> .Clear
> .List() = myvalue
> .Text = svtext
> ev = True
> If UBound(myvalue) > 0 Then
> .DropDown
> End If
> Else
> .Clear
> .Visible = False
> .Visible = True
> .SetFocus '↑ここは、こうしないと残像が残るので(Excel2000)
> End If
> End With
>End Sub
>
絞り込むシートを"sheet1"のB列にするとしたらどうなるのでしょうか?
>A列が更新された時(データが増えたとき)の処理はしていませんが、
>A列にデータの登録などが行われた時点で処理をしなければなりません。
>そうしないと追加データがコンボボックスに反映されません。
どのような処理をすればよいのでしょうか?
よろしくお願いします。
|
|