2012-11-02 140 views
0

你好,我已经为复制特定行,并将其粘贴在特定列代码 代码列属性粘贴行

Range(rng, rng.End(xlToRight)).copy 
Columns(c).Offset(, 6).PasteSpecial Transpose:=True 

它工作正常 但是,当我想开始从粘贴2细胞特定列的i,E

Range(rng, rng.End(xlToRight)).copy 
Columns(c).Offset(2, 6).PasteSpecial Transpose:=True 

它给 “对象中定义的误差”

请帮我

回答

2

这应该工作:

Cells(2, Cells(1,Columns(c).Column).offset(,6).Column).PasteSpecial Transpose:=True 

凌您选择第2行通过Cells(2,和6列的任何C是正确的上面通过Columns(c).Column).Offset(,6).Column)

之所以Columns(c).Offset(2,6)不起作用的原因是你告诉excel将一个Entire Column偏移2行,你不能这样做,因为它会有效地将数据从工作表中删除。

可以抵消EntireColumns对于一个给定的列数和EntireRows对行的给定数量,而不是通过EntireColumns行和EntireRows BY列。

+0

我真的觉得,那个'细胞(1列(C).COLUMN).offset( ,6).Column'不是太直白的说法'c + 6' –

+1

我同意,除非我碰巧知道'c'是作为一个字母传递的,而不是一个数字,所以这是行不通的。我知道'c'作为列字母(字符串)传递,因为我已经在SO上看到@M_S_SJJJAN代码几天了。 –

2

您不能逐列偏移列,列总是全部。你应该抵消一个单元格。

Columns(c).cells(1).Offset(1, 6).PasteSpecial Transpose:=True 

Columns(c).cells(2).Offset(, 6).PasteSpecial Transpose:=True 

Columns(c).cells(2, 7).PasteSpecial Transpose:=True 

cells(2, c+6).PasteSpecial Transpose:=True