Несоответствие типов VBA, ошибка времени выполнения 13 - PullRequest
0 голосов
/ 22 декабря 2011

Я только что написал небольшую функцию VBA, которая выглядит так, как показано ниже. В качестве функции вывода я бы хотел получить Range

Public Function selectRows(col As String) As Range

Dim begin, fini As Integer
Set TopCell = Cells(1, col)
Set BottomCell = Cells(Rows.Count, col)
If IsEmpty(TopCell) Then Set TopCell = TopCell.End(xlDown)
If IsEmpty(BottomCell) Then Set BottomCell = BottomCell.End(xlUp)
begin = TopCell.Row
fini = BottomCell.Row
Set selectRows = Activesheet.Range(col & begin & ":" & col & fini)
End Function

Затем я получаю ошибку несоответствия типов при попытке установить выходной сигнал = диапазон (...)

Не могли бы вы помочь мне решить эту проблему, спасибо заранее

Ответы [ 2 ]

2 голосов
/ 22 декабря 2011

Очень плохая идея использовать зарезервированное слово, такое как столбец, в качестве имени вашей переменной. Если вы хотите, чтобы функция возвращала диапазон, вы хотите:

Set selectRows = Range(scol & TopCell.Row & ":" & scol & BottomCell.Row)

Вместо:

Set output = Range(column & TopCell.Row & ":" & column & BottomCell.Row)

Существуют и другие проблемы, например, если столбец пуст.

0 голосов
/ 22 декабря 2011

Вы вводите данные, превышающие количество имеющихся у вас столбцов. Например, мой Excel 2003 имеет IV столбцы, когда я вставляю IW, он выбрасывает Error 13. Я оставлю свой код ниже, если вы хотите очистить свой код. Некоторая обработка ошибок поможет, чтобы это больше не повторилось.

Public Function selectRows(ByVal sColumn As String) As Range

    Dim lColumn As Long
    Dim TopCell As Range, BottomCell As Range
    Dim wks As Worksheet

    Set wks = ActiveSheet

    lColumn = wks.Range(sColumn & "1").Column

    Set TopCell = wks.Cells(1, lColumn)
    Set BottomCell = wks.Cells(Rows.Count, lColumn)
    If IsEmpty(TopCell) Then Set TopCell = TopCell.End(xlDown)
    If IsEmpty(BottomCell) Then Set BottomCell = BottomCell.End(xlUp)
    Set selectRows = wks.Range(TopCell, BottomCell)

End Function
...