Параметризация значения Paste при использовании PasteSpecial - PullRequest
0 голосов
/ 27 ноября 2018

Я искал таблицу, чтобы при вставке копий некоторых столбцов из одной рабочей книги в другую я мог изменять параметр «Вставить: =» в зависимости от моих потребностей.К моему удивлению что-то вроде:

'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

1 Ответ

0 голосов
/ 27 ноября 2018

Один из вариантов - использовать соответствующее значение, как указано в документации xlPasteType .

Если ваша таблица содержит конкретные элементы перечисления (например, xlPasteAll, * 1007)* и т. д.), другой вариант может быть простой вспомогательной функцией, возможно, что-то вроде этого:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...