VBA代码中的Pastespecial返回语法错误(标题的帖子中提供的解决方案不起作用)

时间:2017-05-05 19:25:17

标签: excel vba excel-vba

我不断陷入一些(我认为会是)简单的宏。字面上只是尝试将一系列单元格中的PasteValues复制到另一个单元格中,同时使用“偏移”将输入放入另一个工作表上可用的最后一行。

大图,我正在尝试在Excel中创建一个“输入”选项卡,然后将采用我的各种健康状况。适应值并将它们插入工作簿中的其他选项卡,以便能够跟踪时间。下面是我正在谈论的“输入”标签的屏幕截图。[1]

有点有效的VBA如下:

Sub DataWarehouseCL()

Sheets("Input").Range("B11").Copy Sheets("Cardio Logs").Range("A1").End(xlDown).Offset(1, 0)
Sheets("Input").Range("B2").Copy Sheets("Cardio Logs").Range("B1").End(xlDown).Offset(1, 0)
Sheets("Input").Range("C11:E11").Copy Sheets("Cardio Logs").Range("C1:E1").End(xlDown).Offset(1, 0)
Range("B11:E11").Select
Selection.ClearContents
Sheets("Cardio Logs").Select
Range("B2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-255
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Sheets("Input").Select
Range("B2").Select

End Sub

但是我觉得这有点多余......并且不想过度使用它并随即解决问题。低于此的VBA是我认为应该工作但仍然给我一个语法错误的那个。

Sub DataWarehouseWL()

Sheets("Input").Range("B6").Copy Sheets("Workout Logs").Range("A1").End(xlDown).Offset(1, 0).PasteSpecial(xlPasteValues)
Sheets("Input").Range("B2").Copy Sheets("Workout Logs").Range("B1").End(xlDown).Offset(1, 0).PasteSpecial(xlPasteValues)
Sheets("Input").Range("C6:F6").Copy Sheets("Workout Logs").Range("C1:F1").End(xlDown).Offset(1, 0).PasteSpecial(xlPasteValues)
Range("B6:F6").Select
Selection.ClearContents
Sheets("Input").Select
Range("B2").Select

End Sub

不确定我的描述是否有任何意义。

[Input Tab][2]
[One of the tabs that I'd like to populate using Input Tab][3]

1 个答案:

答案 0 :(得分:0)

使用直接价值转移来传递xlValues

Sub DataWarehouseWL()

    WorkSheets("Workout Logs").Range("A1").End(xlDown).Offset(1, 0) = _
      WorkSheets("Input").Range("B6").Value
    WorkSheets("Workout Logs").Range("B1").End(xlDown).Offset(1, 0) = _
      WorkSheets("Input").Range("B2").Value
    WorkSheets("Workout Logs").Range("C1:F1").End(xlDown).Offset(1, 0) = _
      WorkSheets("Input").Range("C6:F6")
    Range("B6:F6").ClearContents   'what worksheet does this belong to...?
    Sheets("Input").Select
    Range("B2").Select

End Sub

复制,粘贴值和格式的最简单方法是复制不连续单元格的并集,其中将一个离线空白单元格添加到原始范围。在没有看到你的数据的情况下,除了假设列Z为空之外,我无法提出任何建议,

Sub DataWarehouseWL()

    WorkSheets("Input").Range("B6, Z6").Copy Destination:=WorkSheets("Workout Logs").Range("A1").End(xlDown).Offset(1, 0)
    WorkSheets("Input").Range("B2, Z2").Copy Destination:=WorkSheets("Workout Logs").Range("B1").End(xlDown).Offset(1, 0)
    WorkSheets("Input").Range("C6:F6, Z6").Copy Destination:=WorkSheets("Workout Logs").Range("C1").End(xlDown).Offset(1, 0)
    Range("B6:F6").Select
    Selection.ClearContents
    Sheets("Input").Select
    Range("B2").Select

End Sub