Как удалить ошибку Метод «Диапазон» объекта «-Worksheet» не удалось при выполнении следующего кода VBA - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь кодировать значения vlookup на листе, но массив таблиц находится на другом листе. Я получаю эту ошибку во время выполнения в строке "Установить DataRange = Sourcesheet.Range (StartPoint, DownCel)".

Option Explicit

Sub test()
Dim Filepath As Variant, SetRange As Range, DataRange As Range, StartPoint 
As Range
Dim LastCol As Long, DownCel As Long, NewRange As String
Dim Sourcesheet As Worksheet, wb2 As Workbook, wb As Workbook

Filepath = Application.GetOpenFilename
Set wb2 = Workbooks.Open(Filename:=Filepath)
Set Sourcesheet = wb2.Worksheets("Gold_Pending")

Set StartPoint = Sourcesheet.Range("F2")
DownCel = StartPoint.End(xlDown).Row
Set DataRange = Sourcesheet.Range(StartPoint, DownCel)

NewRange = wb2.Name & "!" & DataRange.Address(ReferenceStyle:=xlR1C1)

With wb.Sheets("GoldPending")

Range("G2").Select
ActiveCell.FormulaR1C1 = _
    "=VLOOKUP(RC[-7],NewRange,1,0)"
Range("G2").Select
Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))
Range(Selection, Selection.End(xlDown)).Select

End With

End Sub

1 Ответ

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

Поскольку у вас нет «полного / полного» диапазона в:

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