VBAコーディングには新しく、仕事中のプロジェクトではすぐにVBAを自分で教えなければなりませんでした。できるだけ頻繁に.selectコマンドを使用しないようにするため、いくつかのコードを書き直そうとしています。問題は、ある範囲を変数として定義し、それを設定しようとしていることです。最初にシートを選択せずに範囲変数を設定することはできません
Dim SearchRng As Range
Set SearchRng = Sheets("Employee Data").Range("B9", Range("B9").End(xlDown).End(xlToRight))
アクティブシートのコードのこのビットが実行されたときに、「従業員データ」シートではないと私は常に取得「実行時エラー 『1004』:アプリケーション定義またはオブジェクト定義のエラーを」。
「従業員データ」シートを最初に選択してから範囲を設定すると、コードが機能することがわかりました。すなわち
Dim SearchRng As Range
Worksheets("Employee Data").Select
Set SearchRng = Range("B9",Range("B9").End(xlDown).End(xlToRight))
これは、.selectコマンドを回避しようとする目的を無効にします。
コードの最初のビットは機能しませんが、2番目のコードは機能しない理由を誰でも説明できますか。
この問題を解決するために必要な追加情報を教えてください(私はVBAの初心者で何が必要なのか分かりません)。
定義しようとしている範囲は何ですか? 「B9」からどこまで?どのセルが 'Range(" B9 ")かEnd(xlDown).End(xlToRight)'であると仮定しますか?私の答えの下のコードはエラーなしで実行されます(あなたが望む範囲についてはわかりません) –
ありがとう。私が言及している範囲は基本的に "従業員データ"シートに格納されているデータベースです。 B9は左上のセルで、データベース全体を選択したいので、.Endコマンドを使用します。範囲は、検索できるように定義することを意図しています。 –
下のコードをテストしましたか?あなたは必要な結果を得ましたか? –