0

ある特定の名前付き範囲セルの値を別の名前付き範囲にコピーするコードを少し書き込もうとしています。

コードは次のとおりです。

If Not Intersect(Target, Target.Worksheet.Range("RaceDrop")) Is Nothing Then
    If Range("RaceDrop") = Range("Races").Cells(1, 1) And Range("ClassDrop") = Range("Classes").Cells(1, 1) Or Range("Races").Cells(1, 1) And Range("ClassDrop") = Range("Classes").Cells(1, 2) Then
         Range("OriginDrop") = Range("Origins").Cells(1, 1)

"Range(" X ")= Range(" Y ")。Cells(x、x)"のようなすべてのステートメントは、Ifステートメントと結果でエラーを出します。ただし、Range( "Races")。Cells(1、1)の"Human"などの静的ステートメントにするとします。この回避策は機能しますが、すべての参照を動的にして、データ値の変更や移動にかかる時間を大幅に短縮したいと思います。

たとえば、Range( "Origins")。Cells(1、1).Textを試しましたが、それでも機能しません。これについて別の方法はありますか?

編集:私が得るエラーは「オブジェクト'_Worksheet'のメソッド'範囲'が失敗しました」であることも追加する必要があります

追加した:

Cells()での参照は、1つのセルだけでなく、実際の範囲を参照しているためです。大きなテーブルを参照するものもあるため、Range( "Table")。Cells(5、3)の場合もありますが、必ずしも1、1を参照するとは限りません。特定のセルを参照する別の方法がわかりません。それよりもテーブルで。

たとえば、私がやりたいビットは次のとおりです。Range( "OriginDrop")= Range( "Origins")。Cells(4、1)

4

2 に答える 2

0

問題が見つかりました。通常、テーブルはグローバルに機能するため、データがあるシートを具体的に入力する必要はありません (通常、Range("Table") があるだけで、コードがどこにあるかに関係なく機能します。を参照してください)ただし..テーブルから別のシートのテーブルにデータをコピーしようとしているようですが、そのようには機能せず、 Sheets("") を定義する必要があります。

この場合を除いて、常にグローバルに機能しているように見えるのは奇妙なことです。しかたがない。試してくれてありがとう。

新しいコードの例:

If Not Intersect(Target, Target.Worksheet.Range("RaceDrop")) Is Nothing Then
If Range("RaceDrop") = Sheets("Data").Range("Races").Cells(1, 1) and Range("ClassDrop") = Sheets("Data").Range("Classes").Cells(1, 1) or Range("Races") = Sheets("Data").Range("Races").Cells(1, 1) and Ranges("ClassDrop") = Sheets("Data").Range("Classes").Cells(2, 1)
     Range("OriginDrop") = Sheets("Data").Range("Origins").Cells(1, 1)
于 2012-10-04T13:46:23.873 に答える
0

2つのこと:

  • Range("RaceDrop").Valueセルの実際の値を示すために使用します。ほとんどのRange("RaceDrop") =場合はうまくいきますが、常に明示的に言うのが最善です.Value
  • コードの一部で何をしようとしているのか完全にはCells(1,1)わかりませんが、範囲内の左上の値を探している場合は、以下のコードのようなものを試してください

交換

Range("Races").Cells(1, 1)

Cells(Range("Races").row, Range("Races").column).Value

参照しているセルの名前Rangesが1つだけのCell場合は、単に使用できるはずです

Range("Races").Value

上記の代わりに。

于 2012-10-04T01:16:38.123 に答える