VBA Excel错误91,设置对象时出错

时间:2015-06-08 11:32:58

标签: excel vba excel-vba

我的VBA Excel代码出现问题,我试图合并选定的单元格并将其后面的数据放在单词合并的位置。 (删除单元格不起作用。)

以下是一个示例(|是单元格的分隔符):

  

|堆栈|溢出| 100 |无|东西|

运行代码,它应如下所示:

  

| Stack Overflow | 100 | None | Something |

但我得到"错误91对象变量或没有设置块,"这是代码:

Dim Cells As Range
Dim CellsContents As String
Dim RangeCells As Range
Set RangeCells = Application.Selection

For Each Cells In RangeCells
    CellsContents = CellsContents & Cells.Value & " "
Next
RangeCells.Value = VBA.Left(CellsContents, VBA.Len(CellsContents) - 1)
Range(Cells(ActiveCell.Row, ActiveCell.Column + Selection.Count), Cells(ActiveCell.Row, 20)).Copy Destination:=Cells(ActiveCell.Row, ActiveCell.Column + Selection.Count - 1)

错误发生在代码的最后一行。我试图用Set在它前面加上一个对象变量,但后来我在目标上遇到了一个错误。如果你想了解更多这方面的信息,因为我知道它有点令人困惑,请告诉我。

2 个答案:

答案 0 :(得分:1)

你的问题是,在最后一行,变量Cells不再在范围内。

因此,您会收到描述“未设置对象变量”的错误。

答案 1 :(得分:0)

你不能使用"细胞"这条路。您需要在以下之前引用工作表对象: 即。 activesheet.cells或工作表(" SheetName")。cells

用下面的代码替换最后一行,它应该可以工作。

希望这有帮助。

Range(ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column + Selection.count), ActiveSheet.Cells(ActiveCell.Row, 20)).Copy ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column + Selection.count - 1)