Как мне скопировать диапазон в VBA? - PullRequest
1 голос
/ 20 января 2009

Я пытаюсь это, но это дает мне несоответствие типов. Есть ли другой способ сделать это? Я предполагаю, что rSource не приходит с активного листа.

Кроме того, мне нужны только значения.

Редактировать: ожидается, что rSource будет иметь строки и столбцы. Это также будет единая непрерывная область.

Редактировать: После завершения этой операции я смогу отфильтровать каждый диапазон независимо.

Function CopyRange(rSource As range) As range
    ' Declarations
    Dim rTemp As range

    ' Create new range starting at cell A1
    Set rTemp = Range(Cells(1, 1), Cells(rSource.Rows.Count, rSource.Columns.Count))

    rTemp.Value = rSource.Value

    Set CopyRange = rTemp
End Function

Ответы [ 3 ]

1 голос
/ 20 января 2009

Я считаю, что ваша функция в порядке.

Я создал тест-тубу:

Function Check()
  Dim x As Range
  Dim c As Range
  Set c = Range("A1", "A2")
  Set x = CopyRange(c)
End Function

С ячейками A1, установленными на 2, и A2, установленными на 3.

При входе в это и оценке переменной x с помощью:
? X.Range ( "A1")
(Я получил несоответствие типов с? X, как вы сделали.)

Я получаю 2.

Надеюсь, это поможет.

1 голос
/ 20 января 2009

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

Или попробуйте это: -

Function CopyRange(rSource As Range) As Range

   Call rSource.Copy(Cells(1, 1))

   Set CopyRange = Range(rSource.Address).Offset(1 - rSource.Row, 1 - rSource.Column)

End Function
0 голосов
/ 20 января 2009

Это непрерывная зона? Это ограничено пустыми клетками? Если это так, вы можете использовать свойство currentregion для установки диапазона.

Я думаю, причина того, что вы получаете ошибку, заключается в том, что вы не устанавливаете rSource в своем первом объявлении ячеек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...