『リストボックスを使用頻度で並び替える』(octn) こちらの学校で習った簡易リストボックスを便利に使用しています しかし ボックス内の選択支が20以上になる場合もありまして 何とかならない 物かと・・・ たとえば 選択の都度 語句(セル)がリストボックスの最上位に 並び変わると良いと思うのですが この様なことはできますか? よろしくお願いいたします Excel2003 WindowsXP ---- マクロを使えばできると思います。 リストが選択されたら、sheetモジュールのChangeイベントで、 リスト元になっているセル範囲のデータを並べ替えればできるかと思います。 (INA) ---- INAさん 回答して下さってありがとうございます。 sheet1のA1にリストボックスがあり sheet2のA1:A20がリスト範囲の時 リストデータの下方(たとえば項目18)を選択入力します 次回入力時には 項目18 がリスト範囲の最上位に並び変わっていて できれば リストボックスのスクロールバーも上位に戻したいのですが・・ よろしく ご教授ねがいます (octn) ---- sheet2 A1:A20 に 名前を data と定義して、 sheet1 A1 に入力規則のリストを設定してお試し下さい。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range If Target.Address(0, 0) <> "A1" Then Exit Sub With Worksheets("Sheet2") Set r = .Range("A1:a20").Find(Target.Value, LookIn:=xlValues, LookAt:=xlWhole) If r Is Nothing Then Exit Sub r.Cut .Range("A1").Insert Shift:=xlDown .Range("A1:A20").Name = "data" End With End Sub (INA) ---- INAさん おはようございます うまく行きました すばらしいです! しかし 実際のシートには他にもリストボックス(B1とC1)がありまして リスト範囲はそれぞれ sheet2のB1:B20、C1:C20 です 同じように 並び替えることは できるでしょうか(octn) ---- どうぞ〜。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range With Worksheets("Sheet2") Select Case Target.Address(0, 0) Case "A1" Set r = .Range("A1:A20").Find(Target.Value, LookIn:=xlValues, LookAt:=xlWhole) Case "B1" Set r = .Range("B1:B20").Find(Target.Value, LookIn:=xlValues, LookAt:=xlWhole) Case "C1" Set r = .Range("C1:C20").Find(Target.Value, LookIn:=xlValues, LookAt:=xlWhole) End Select If r Is Nothing Then Exit Sub r.Cut .Cells(1, r.Column).Insert Shift:=xlDown .Range("A1:A20").Name = "data1" .Range("B1:B20").Name = "data2" .Range("C1:C20").Name = "data3" End With End Sub   *名前の定義は、A=data1,B=data2,C=data3 です。 (INA) ---- 早速対応していただき ありがとうございます 最近目がショボ付いてきたので これで入力作業がラクになります また判らない事で質問させて頂くことがあるかと思いますので よろしくお願いいたします ほんとうにありがとうございました(octn)