2017-01-31 8 views
0

ユーザーが特定のシートに保存されている問題(Issues List)を更新できるようにするユーザーフォームを作成しようとしています。ユーザーがリストから一意の問題名を選択できるようにするデータ検証を使用して、ドロップダウンリストを作成しました。そのドロップダウンの横にあるボタンを作成して、ユーザーフォームを開き、ドロップダウンから識別された問題名を正しくインポートします。Excel VBA - 情報をユーザーフォームにプルして更新する

私は、ユーザーフォームが開始されたときに、「Issues List」シートでB列を検索し、ユーザーが選択した問題がどの行に含まれているかを特定し、 「Issue List」シートのCX行に記載されている情報と比較します。

私が使用しようとしてきたのは、インデックスマッチ機能でしたが、コードを動作させるのに失敗しました。私が使っているものの例は次のとおりです。

Resolved.Value = Application.WorksheetFunction.index 
('Issue List'!$X$2:$X$1000,Application.WorksheetFunction.match 
('Priority Table'!I35,'Issue List'!$B$2:$B$1000,0)) 

助けていただければ幸いです。

ありがとうございます!

答えて

1

あなたはVBAでワークシート関数を使用すると、あなたはまだVBA言語を使用して範囲を渡す必要があります:

ので、代わりの:

あなたが使用する
'Issue List'!$X$2:$X$1000 

Worksheets("Issue List").Range("X2:X1000") 

代わりに:

'Priority Table'!I35 

ちょうど使用:あなたはまた、より簡単に、また、はるかに安全コーディングすることができます名前で範囲を参照することができ

Worksheets("Priority Table").Range("I35") 

注意。スプレッドシートに行を挿入すると、ExcelはVBAコードの範囲を自動的に更新しません。 I35への参照は常にI35になります。

代わりに、ExcelでセルI35の名前を通常どおり定義し、コード内で参照してください。例えば

、あなたが「問題」として

をI35に名前を付ける場合は、でセルを参照することができます:それは限り、デフォルトにあるグローバル変数である場合、

Range("Issue") 

(それは、ブックに一意の名前ですが、あなたはシート(「優先順位表」)修飾子を使用する必要はありません

は、VBAからExcelの範囲を参照する方法についての詳細は、このドキュメントを参照してください:。 https://msdn.microsoft.com/en-us/library/office/gg192736(v=office.14).aspx

関連する問題