Как выбрать последнюю ячейку в моем активном диапазоне? - PullRequest
0 голосов
/ 14 октября 2019

Мне нужно выбрать последнюю ячейку в указанном диапазоне.

Я извлекаю данные из базы данных. Я успешно перехожу к нужному листу и нахожу и выбираю переменное число менеджеров (начиная с двух строк внизу от «Количество менеджеров». Теперь мне просто нужно выбрать последнюю строку активных ячеек и выполнить мой оператор If ниже.

Windows("MCS Cumulative_Data.xls").Activate
Sheets("Sheet 12").Select
Range("A1").Select
Cells.Find(What:="Number of Managers", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(2, 0).Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select

'Часть кода, но не важная для вопроса.

ActiveCell.Offset(0, 1).Select
If ActiveCell.Value = "" Then
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"  
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "0"
Else
End If

Я пробовал около 15 различных Dim-утверждений из других вопросов. Все они кажутся близкими к вопросу о том, чтоДа, но не совсем.

Ответы [ 3 ]

2 голосов
/ 14 октября 2019

возможный пример «как избежать выбора» (и некоторые другие маленькие советы) «свернет» ваш код до следующего:

With Workbooks("MCS Cumulative_Data.xls").Sheets("Sheet 12")
    With .Cells.Find(What:="Number of Managers", After:=.Cells(1, 1), _
                     LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
                     SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Offset(2, 0).End(xlDown).Offset(0, 1)            
        If .Value = vbNullString Then .Resize(1, 13).Value = "0"                        
    End With
End With
1 голос
/ 14 октября 2019

ActiveCell.End (xlDown) .Select

Не выбирает последнюю продажу в выбранной группе, но захватывает нужную ячейку.

1 голос
/ 14 октября 2019

Как насчет этого:

    lastrow = Range(ActiveCell, ActiveCell.End(xlDown)).Cells.Count 'gets the last row from active cell
    NumRow = ActiveCell.Row 'gets the colum the active cell is in
    Cells(lastrow, NumRow).Select 'selects that cell
...