我一直希望有一个表格,以便在将某些列从一本WorkBook复制粘贴到另一本时,可以根据需要修改“ Paste:=”参数。令我惊讶的是:
'The code itself work if i change paste for the regular xlPasteAll or any
'of those, this are just the "key" lines
whichPaste = columnRaw.Offset(0, 2) 'whichPaste is defined as a String
destinySheet.range(letterMarket & firstMarketRow + 1).Select
Selection.PasteSpecial Paste:=whichPaste
我已经看到xlPasteAll是一个Enum
,因此我知道它不能作为String
使用。那我应该只使用具有的关联整数吗?没有更好的方法来解决这个问题?
谢谢!
最后,我对接受的答案表示感谢:
whichPaste = translatePaste(whichPaste)
Selection.PasteSpecial Paste:=CInt(whichPaste)
translatePaste为:
Function translatePaste(whichPaste As String) As String
If whichPaste = "xlPasteAll" Then
translatePaste = "-4104"
' more casuistics...
End If
End Function
答案 0 :(得分:2)
一种选择是使用xlPasteType
documentation中的相应值。
如果您的表包含枚举的特定成员(例如xlPasteAll
,xlPasteValues
等),则另一个选项可能是简单的辅助函数,也许是这样的:
Function ConvertPasteType(pasteType As String) As Integer
Select Case pasteType
Case "xlPasteAll"
ConvertPasteType = xlPasteAll
Case "xlPasteValues"
ConvertPasteType = xlPasteValues
' and so on
End Select
End Function
然后:
whichPaste = columnRaw.Offset(0, 2)
destinySheet.range(letterMarket & firstMarketRow + 1).PasteSpecial Paste:=ConvertPasteType(whichPaste)