将动态范围文本复制到另一个范围

时间:2012-10-04 01:03:28

标签: excel vba

我正在尝试编写一些代码,将一个特定命名范围单元格的值复制到另一个命名范围。

代码如下:

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的“Human”(“Races”)。单元格(1,1)。虽然这种解决方法有效,但我希望所有引用都是动态的,因此更改或移动数据值所需的时间要少得多。

我尝试了Range(“Origins”)。单元格(1,1)。例如文本,但它仍然不起作用。还有另一种方法可以解决这个问题吗?

编辑:我还应该补充一点,我得到的错误是“对象'_Worksheet'的方法'范围'失败”

添加了:

使用Cells()的引用是因为它们引用的是实际范围,而不仅仅是一个单元格。有些引用大表,所以有时它会是Range(“Table”)。单元格(5,3),它并不总是指1,1。我不确定引用特定单元格的另一种方式在一张桌子上。

例如,我想做的一点是: 范围(“OriginDrop”)=范围(“起源”)。单元格(4,1)

2 个答案:

答案 0 :(得分:0)

两件事:

  • 使用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

而不是上述。

答案 1 :(得分:0)

发现问题。通常情况下,我不必专门输入数据所在的表格,因为表格全局工作(通常我只有Range(“表格”),无论代码在哪里,它都可以工作,因为它总是知道在哪里然而,似乎因为我试图将表中的数据复制到另一张表上的表中,它不会那样工作,需要定义表(“”)。

除了在这个例子中,它似乎总是在全局工作。那好吧。谢谢你的尝试。

新代码示例:

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)