几步后,VBA中的剪贴板消失

时间:2019-05-26 07:45:51

标签: excel vba format clipboard

我有一个代码,应在应用几步后恢复范围格式。

Sub MyCode()
Sheets("My sheet").ListObjects("My Table").DataBodyRange.Copy
...
refreshing connection and calling function that applies stored formulas to table columns
...
Sheets("My sheet").[A10].PasteSpecial Paste:=xlPasteFormats
End sub

我在范围上遇到错误PasteSpecial方法失败 如果我立即粘贴,则可以。

是否可以将范围格式另存为变量?

1 个答案:

答案 0 :(得分:0)

这里是一个有关如何使用变量存储复制方法并在以后使用它的示例。您可以将范围设置为变量CopyRange并使用CopyRange.Copy来存储它,以后您可以使用它,因为范围已存储在CopyRange中,并且不会因其他原因而丢失进程运行。

Option Explicit
Sub CopyDataToTemplate()

Dim ws As Worksheet
Dim srcWB As Workbook
Dim destWB As Workbook
Dim srcWS As Worksheet
Dim destWS As Worksheet
Dim CopyRange As Variant

Dim i As Long, j As Long
Dim srcLRow As Long, destLRow As Long

Set destWB = Excel.Workbooks("DOLine_example.xlsx")
Set srcWB = ActiveWorkbook
Set srcWS = srcWB.ActiveSheet
Set destWS = destWB.Sheets("DOLine")

srcLRow = srcWS.Cells(srcWS.Rows.Count, "A").End(xlUp).Row
destLRow = destWS.Cells(destWS.Rows.Count, "A").End(xlUp).Row

Application.ScreenUpdating = False
'loop through column 1 to 19
For i = 1 To 19
    For j = 1 To 13
        'loop through columns

            If destWS.Cells(3, i).value = srcWS.Cells(1, j).value Then    
                ' Copy column B to Column D as written in your code above
                Set CopyRange = srcWS.Range(Cells(2, j), Cells(srcLRow, j))
                    CopyRange.Copy
                ' paste columns from one wb to Columns to another wb
                destWS.Cells(destLRow, i).PasteSpecial Paste:=xlPasteAll, Transpose:=False
                Application.CutCopyMode = False
            End If
    Next j
Next i
Application.ScreenUpdating = True
MsgBox "Process completed!", vbInformation
End Sub