ComboBox にリンクされたテキスト (セルにリンクされている) との一致に基づいて動的リストを作成する名前付き範囲を参照する ComboBox があります。リストには一致数の長さがあり、ComboBox にはそれを更新するための ComboBox_Change があります。
今私の問題は、ドキュメント内で Ctrl+Z を使用できないため、作業が非常に困難になることです。以前は、ワークシートに変更を加えたリストtrigerrinの問題もありましたが、名前付き範囲「ゾーン」をExcel全体ではなくそのシートに変更したため、停止したようです(それ自体のシートでも奇妙に)。名前付き範囲で使用されているセルは、別のシートを参照しています。
昨日、すべての変更がボックスを更新し、リストを配列として「キャッシュ」する必要があるため、誰かが言及したリンクを見ました(プロパティの 1 つが参照されるたびに (Excel VBA) コンボボックスの変更イベントがトリガーされるのはなぜですか?)。リストの長さが変化し続け、一度に 500 個のセルを ctrl+shift+enter できない場合 (それでうまくいくでしょうか?)、どうすればよいでしょうか?
ここにいくつかのコードと式があります。私はフランス語からフリーランスで翻訳しているため、式のタイプミスがあるかもしれません. Sheet1 が私の ComboBox の場所だとします。
名前付きリストを作成するために使用されるセル式(実際には関係ないと思います)
=IFERROR(INDEX(Sheet2!$H$2:$H$501;MATCH(ROWS(Sheet1!$B$1:B1);Sheet1!$B$1:$B$503;0));"")
私の ComboBox VBA は次のとおりです。
Private Sub ComboBox1_Change()
ComboBox1.ListFillRange = "DropDownList"
Me.ComboBox1.DropDown
Range("H1").Value = 1
End Sub
Range("H1") はこれには関係ありません。カウントをリセットして、「次へ」および「前へ」の画像のボタンがリセットされるようにすることです。
名前付き範囲 (動的な長さ)。ここで、A は ComboBox の「検索」との 1/0 部分一致を示し、B は取得した部分一致の数を示し、C は他のタブのドロップダウン リストを満たす値をリストします。 .
参考にならないと思いますが、ここにそれらのフォーラムがあります。決定されたシートがない場合は、Sheet1 を意味します。
A:
=--ISNUMBER(IFERROR(SEARCH(Sheet1!$D$1;Sheet2!H2;1);""))
B :
=IF(A1=1;SUMIF($A$1:A1;1);"")
子:
=Sheet1!$C$1:INDEX(Sheet1!$C$1:$C$503;MAX(Sheet1!$B$1:$B$503);1)
編集:ニックへの返信で、さらに明確にします。私は基本的に、動的リストに影響を与えないものであっても、ワークシートが変更されるたびに実行されないように、マクロを記述する別の方法を探しています。メイン スレッドで言及するのを忘れていましたが、ComboBox が空の場合 (つまり、列 A から C から何も除外されず、リストが「最大容量」になっている場合)、元に戻す操作は正常に機能しますが、そこから ComboBox (または一致するセル) にあるものは、元に戻すことができません。