Excelの動的データ範囲に基づいてコンボボックスまたはリストを自動調整する方法

今すぐ共有:

データベースからダウンロードされたデータがコンボボックスの範囲を超える場合、新しいアイテムは表示されません。 これに対抗するには、リストボックスまたはコンボボックスの下にある範囲を拡大または縮小してデータと一致させる必要があります。 この記事では、これを自動的に行う方法について説明します。 

リーダーには開発者リボンが表示されており、VBAエディターに精通していることを前提としています。 そうでない場合は、Googleの「Excel開発者タブ」または「Excelコードウィンドウ」をご覧ください。

コンボボックスを表示する専門的な方法は、必要に応じて範囲を拡大または縮小することです。 例えば:コンボボックスを表示する専門的な方法

ダイナミックレンジの鍵は、関数= countAを使用して、関連する列に入力された行の数を監視することです。 この関数は、最後のセルに到達するまで、一連のセルに入力された要素をカウントします。 上の画像の最初の図の場合、それは行11になります。

範囲を維持するには、入力された行の数を追跡するために定義された名前が自動的に必要です。 たとえば、eCol(終了列)とeRow(終了行)を使用して範囲の境界を定義します。 入力する行が多いほど、eRowの値は大きくなります。eColとeRowを使用して範囲の境界を定義する

上記で定義された名前により、リストはeCol(eRow = 1)に入力された行の数だけ11列幅(eCol = XNUMX)に設定されています

最後に、タイトルは「A2:A」とeRowの範囲に表示されます。 インデックス機能は、「タイトル」と呼ばれる範囲の最後のセルを確立するために使用されることに注意してください。 事実上、範囲「A2:A」とeRowは、この段階で「A2:A11」に変換されます。インデックス機能

ブックが表示される前に実行されるAuto_openサブプロシージャを使用して、ブックが開いたときにダイナミックレンジを自動的に設定できます。

コード

ブックを開き、コンボボックスといくつかのデータを入力します。 この演習で使用したサンプルワークブックは次のとおりです。 こちら.

VBAコードウィンドウを開き、モジュールを挿入します。 以下のコードをモジュールにコピーします。

Auto_Openイベントは、ダイナミックレンジ「Titles」の最後の行と最後の列の値を設定し、その後に行われた変更を記録します。

Sub auto_open()
     Dim eRow As Integer, eCol As Integer, i As Long
 
     On Error Resume Next
 
     'Clear the present define names, to avoid any duplications
     activeworkbook.Names("eCol").Delete
     activeworkbook.Names("eRow").Delete
     activeworkbook.Names("Titles").Delete
     Range("A1").Select
 
    'Titles will appear in the first column, A in this case
    eCol = 1
 
    'Find the last populated row
    eRow = Sheets("Main").Cells(Rows.Count, eCol).End(xlUp).Row
 
    'Define the names
     activeworkbook.Names.Add Name:="eCol", RefersTo:="=COUNTA($1:$1)"
     activeworkbook.Names.Add Name:="eRow", RefersToR1C1:="=COUNTA(C" & ColNo & ")"
     activeworkbook.Names.Add Name:="Titles", RefersTo:="=A2:INDEX($2:$200," & "eRow," & "eCol)"
End Sub

Sub DropDown1_Change()
     MsgBox "Directed by " & Cells(2, 5)
End Sub

注: 表示を簡素化するために、すべてが 1 つのページに配置されています。通常、列 A と B、および D と E の値は、別の、場合によっては非表示のシートにあります。また、この特定の演習では、2 番目の列 B は範囲の定義には使用されていないことに注意してください。列 B の値は、コンボ ボックスのセル リンク プロパティを介して通常の方法で取得されます (D2 は、A2 から始まる範囲の 3 番目の要素の選択を反映しており、ディレクターを見つけるために「E3」の Index 関数 ( =INDEX(B:B,D2+1,1)) と組み合わせています)。コンボボックスは、最初はAuto_openによって入力されます

ブックを保存して、再度開きます。 コンボボックスには、最初にAuto_openが入力されます。 列AとBに項目を追加し、コンボボックスの変更を確認します。

破損したExcelファイルをサルベージ

Excelが予期せずクラッシュした後、Excelファイルが破損することがあります。 バックアップがある場合は、バックアップを使用してデータを簡単に復元できます。 そうでなければ、あなたは回復するために専門家またはツールを探す必要があるかもしれません 破損したExcel ファイル。

著者紹介:

フェリックスフッカーは、のデータ復旧の専門家です DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 RAR修復 およびSQL回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com

今すぐ共有:

コメントは締め切りました。