vba:选择行失败,行复制是主要任务

时间:2015-12-27 22:23:20

标签: excel-vba vba excel

我没有按照简单的任务将行复制到具有一列偏移量的不同工作表。

一个简单的

With ThisWorkbook.Sheets("CSVImport")
    .Range(.Cells(1, 1), .Cells(1, maxColumn)).Select

失败,因为大小不匹配。我假设选择了整行

如果我选择仅测试所需的部分

void on_pad_added(GstElement *element, GstPad *pad, gpointer data) {
  GstElement videoelem = ((GstElement *)data)[0];
  GstElement audioelem = ((GstElement *)data)[1];
  ...
}

我收到错误选择无法完成,错误1004。

我只想让A1:C1复制到B1:D1。

2 个答案:

答案 0 :(得分:0)

斯科特的评论可能确定了这个问题;我敢打赌,当你这样做时,maxColumn为零。要填充它,你应该使用类似的东西:

With ThisWorkbook.Sheets("CSVImport")
    maxColumn = .Columns.Count
    .Range(.Cells(1, 1), .Cells(1, maxColumn)).Select
End With

HOWEVER ,它不处理您无法复制整行并将其粘贴到第2列的基本问题(正如您所说,“带有偏移量)一栏“)。它根本不适合。但是已经说过了......那不是你的代码试图做的事情。单元格(2,1)指的是 2, 1;偏移量为1行,而不是1列。您发布的代码:

With ThisWorkbook.Sheets("CSVImport")
    .Rows(1).Copy Destination:=ThisWorkbook.Sheets(strAccount).Cells(2, 1)

实际上对我有用... 提供 ,变量strAccount填充了有效的工作表名称。

我认为退一步看看你真正想做什么可能是一个想法;目标是偏移1列还是1行。如果它偏移了1列,那么你只需要复制带有数据的列,而不是整行。

答案 1 :(得分:0)

我现在使用此代码

解决了这个问题
Dim target As Worksheet
Set target = ThisWorkbook.Sheets("1904097928")
Dim from As Worksheet
Set from = ThisWorkbook.Sheets("CSVImport")

With ThisWorkbook.Sheets("CSVImport")
    Dim maxColumn As Integer
    maxColumn = Helper.lastColumn(from)
    .Range(.Cells(1, 1), .Cells(1, maxColumn)).Copy Destination:=target.Cells(1, 2)
End With

其中lastColumn计算为

Function lastColumn(sheet As Worksheet) As Integer
    lastColumn = sheet.Cells(1, Cells.Columns.Count).End(xlToLeft).Column
End Function