Поскольку у вас нет «полного / полного» диапазона в:
Range(StartPoint, DownCel)
Разбивка частей:
Set StartPoint = Sourcesheet.Range("F2") 'This one will give you the starting point of your range i.e. both Column ("F") and Row ("2") location.
DownCel = StartPoint.End(xlDown).Row 'This will only give you "last" row (lets say 13).
Поэтому вы сейчас пишете:
Sourcesheet.Range(StartPoint, DownCel) => Sourcesheet.Range("F2", 13).
Изменить на:
Sourcesheet.Range(StartPoint, DownCel) => Sourcesheet.Range(StartPoint, "F" & DownCel)
Пример кода для иллюстрации:
Sub test()
Dim StartPoint As Range
Dim DataRange As Range
Set Sourcesheet = Worksheets("Sheet1")
Set StartPoint = Sourcesheet.Range("F2")
DownCel = StartPoint.End(xlDown).Row
Set DataRange = Sourcesheet.Range(StartPoint, "F" & DownCel)
DataRange.Select 'To visualize what Datarange will select
End Sub
РЕДАКТИРОВАТЬ, используя "With
" двумя способами:
Sub test()
Dim StartPoint As Range
Dim DataRange As Range
Dim wb As Workbook 'Alternative 1 & 2
Dim sht As Worksheet 'Alternative 1
Dim ws As Worksheet
Set Sourcesheet = Worksheets("Sheet1")
Set wb = ActiveWorkbook 'Alternative 1 & 2
Set sht = wb.Worksheets("Sheet1") 'Alternative 1
Set StartPoint = Sourcesheet.Range("F2")
DownCel = StartPoint.End(xlDown).Row
Set DataRange = Sourcesheet.Range(StartPoint, "F" & DownCel)
DataRange.Select 'To visualize what Datarange will select
With sht 'Alternative 1
With wb.Worksheets("GoldPending") 'Alternative 2
'Do stuff...
End With
End With
End Sub