1

次のコードを使用しています。

Dim rng As Range

Set rng = Workbooks("import sheet.xls").Sheets("import").Range("project_name,project_author,project_code,project_breaker,default_fault_ac_mcb,default_fault_ac_mccb,default_fault_dc,default_fault_acb,default_rvdrop,default_svdrop,default_eff,default_pfactor,default_ratio,default_freq,default_sfactor_ac,default_spfactor")

For Each cell In rng.Cells
    MsgBox cell
Next cell

project_name、などは、シートproject_author内の異なる名前付き範囲です。問題は、上記のリスト (既に定義済み) に別の名前付き範囲を追加すると、実行時エラー 1004 (「範囲クラスの選択メソッドが失敗しました」) が発生することです。

範囲オブジェクトに追加できる名前付き範囲の数に制限はありますか?

4

2 に答える 2

0

私はあなたの問題を調査していませんが、以下のポイントはあなたと Sid に解決策のヒントを与えるかもしれません.

アクセスする場合Rng.Address、文字列のサイズに制限があります。制限が 253 であると主張するコメントをインターネットで見つけましたが、私はこれを信じていません。 Rng.Address完全なサブ範囲の終わりで常に切り捨てられるため、返される文字列は構文的に正しく、不完全です。したがって、制限はサブ範囲の正確な文字列サイズによって異なります。

私は反対の問題を抱えていました。何千行もあるシートがありました。AutoFilter を使用して目的の行を選択し、範囲を保存しました。しかしRng.Address、私に与えられたのは最初の 19 かそこらの関心範囲だけでした。For Each Cell In Rng完全な文字列を取得するには、範囲文字列を使用して組み立てる必要がありました。

文字列の長さは 255 文字です。ユニオン内のサブ範囲の数に明らかに制限はありません。サブ範囲をユニオンに個別に追加してみることができます。

幸運を祈ります。

PS 私のアセンブル範囲文字列ルーチンが必要な場合は、大歓迎です。

于 2012-04-20T09:00:57.337 に答える
0

なぜこれが起こるのかについては何も見つかりませんでしたが、まだ探しています。

ただし、これは機能します。を使用して範囲を組み合わせることができますUNION

Sub Sample()
    Dim rng As Range, cell As Range, newRng As Range

    Set rng = Sheets("import").Range("project_name,project_author,project_code,project_breaker,default_fault_ac_mcb,default_fault_ac_mccb,default_fault_dc,default_fault_acb,default_rvdrop,default_svdrop,default_eff,default_pfactor,default_ratio,default_freq,default_sfactor_ac,default_spfactor")

    Set newRng = Union(rng, Sheets("import").Range("default_sid"))

    For Each cell In newRng.Cells
        MsgBox cell
    Next cell
End Sub

更新: この動作を説明している Microsoft ドキュメントは見つかりませんでしたが、いくつかの実験の後、範囲オブジェクトに追加できる名前付き範囲の最大数は 16 であることが確認できました。この動作は、Excel 2003、2007 で確認できます。 、および 2010 年。

奇妙なことに、この動作はExcel 2011 (MAC)では再現されませんでした。19 の名前でテストしたところ、うまくいきました。

より多くの更新

さらにテストした結果、範囲Name1Name2Name3などの名前を付けると、Excel 2003-2007-2010 で名前付き範囲をさらに追加できることがわかりました。したがって、名前の命名で何かをしなければなりません。

Microsoft にバグを報告しました。

テスト用のサンプル ファイル:

https://skydrive.live.com/redir.aspx?cid=cdd3f8abe20bbe3b&resid=CDD3F8ABE20BBE3B!157&parid=CDD3F8ABE20BBE3B!150&authkey=!ADP_QVBopsqenBA

于 2012-04-20T07:13:38.263 に答える