2016-02-15 7 views
2

Я просто хочу знать, можно ли переписать код, который у меня ниже, в более простых или более коротких командах. Я новичок и чувствую, что я не делаю этого наилучшим образом. То, что я пытаюсь сделать, - выбрать все смежные данные в столбце A. Спасибо.Excel VBA Selection - лучший код

Sub colA() 

Dim LastRow As Long 
LastRow = Cells(Rows.Count, 1).End(xlUp).Row 

Cells(LastRow, 1).Select 
Range(Selection, Selection.End(xlUp)).Select 


End Sub 

ответ

2

Что понравилось?

Range(Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1).End(xlUp)).Select 

Даже тогда я бы избежать этого, я хотел бы сделать что-то вроде:

With Range(Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1).End(xlUp)) 
    .Something 
    .Something_Else 
End with 

Попробуйте использовать только Выберите, когда вы абсолютно необходимо.

Даже тогда, это будет только чтобы выбрать вверх, пока пустой, если вы хотите, чтобы весь набор данных, это будет сделать это:

Range("A1:A" & range("A" & Rows.Count).end(xlUp).Row) 

Вы можете обернуть, что в с или .select, если тебе нужно.

+0

Я не знал, что вы можете вложить все эти утверждения ячеек. Спасибо за помощь, очень благодарен. Могу ли я спросить, почему вы упомянули, чтобы попытаться использовать Select, когда вам это абсолютно необходимо? Я хочу убедиться, что я понимаю серьезность этого действия. Благодарю. –

+0

Я полностью согласен с чрезмерным использованием '.Select'. Я думаю, что его использование рождается из записи и модификации макросов - и тогда это просто кажется нормальным способом делать что-то. Применение методов против диапазона, а не выбора, безусловно, является предпочтительным и более чистым способом решения большинства проблем. – Hambone

+0

Это медленное обновление экрана и использование вычислительной мощности. Большинство вещей можно сделать, не выбирая, например, «Range (« A1 »). Select'' Selection.Font.Bold = True' можно записать как 'range (" A1 "). Font.Bold = true' –

1

Это не отвечает на ваш вопрос напрямую, но я хотел показать вам возможную альтернативу. Вы использовали произведение «смежное», которое для меня означало, что они вместе - и я вроде не знаю, что вы имеете в виду. Если все, что вы хотите, это заполненные ячейки в столбце A, вы можете фактически выбрать это с помощью метода диапазона SpecialCells и затем комбинировать формулы и константы - по существу, два способа, которыми может быть заполнена ячейка.

Dim ws As Worksheet 
Dim r As Range 

Set ws = ActiveWorkbook.ActiveSheet 
Set r = Application.Union(ws.Range("A:A").SpecialCells(xlCellTypeFormulas), _ 
    ws.Range("A:A").SpecialCells(xlCellTypeConstants)) 

r.Select 

То есть, я эхо @ комментарий DanDonoghue, что .Select редко путь. Что вы делаете с этими ячейками? Вы копируете их в буфер обмена?

r.Copy 

Вы выравниваете форматирование?

r.ClearFormats 

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