2017-02-20 6 views
0

Здесь есть 2 вещи. Первое: я использую цикл For для перехода через каждую строку. Второй: я не знаю, какой последний столбец содержит данные в каждой строке, и поэтому я пытаюсь использовать функцию Range.End, чтобы найти ее. Чтобы выбрать последний столбец с данными в строке х, код, который работает в:Excel VBA - Использование функции диапазона в пределах функции диапазона

Cells(x, Range("C" & x).End(xlToRight).Column).Select 

Как видно из вышесказанного, я начинаю из столбца C, строки X и ищет последнюю ячейку с данными в эта строка. Я не думаю, что важно, с какого столбца я начинаю, поскольку в столбцах A, B, C, D и E обязательно будут данные.

Теперь я пытаюсь выбрать диапазон из ячеек (x, 3) (или столбца X строки X) в последнюю ячейку с данными в строке x. Следующий код не работает:

Range("Cells(x,3):Cells(x, Range("C" & x).End(xlToRight).Column)").Select 

Я не знаю, если мне позволено использовать функцию диапазона, как это. Ошибка представляет собой ошибку компиляции с указанием «ожидаемый: разделитель списков или)», и он выделяет C в Range("C" & x). Я внимательно смотрел, но ничего не вижу.

Я высоко ценю любую помощь.

ответ

0

Используйте это так:

Range(Cells(x,3), Cells(x, Range("C" & x).End(xlToRight).Column)).Select 
+1

Oh шляпу. Позволь мне просто уйти и уйти! Чувак, полчаса, и я думаю, почему почему? Смущенный это не слово! Во всяком случае, я ценю вашу помощь. Я отвечу через 10 минут! Благодаря! – KoderM16

1

Вашего метод с использованием End(xlToRight) будет работать только если ваш диапазон непрерывный.

Если у вас пустые ячейки в середине диапазона (скажем, столбцы M и N пустые), вы не получите ячейки с данными в столбцах «O: X».

Для Select последнего столбца с данными в строке х, используйте:

Cells(x, Cells(x, Columns.Count).End(xlToLeft).Column).Select 

Чтобы Select все Range использования:

Range(Cells(x, 3), Cells(x, Cells(x, Columns.Count).End(xlToLeft).Column)).Select 

Однако редко бывает необходимость Select, если вы «должно» тогда лучше сначала определить Range, например:

Dim Rng As Range 

Set Rng = Range(Cells(x, 3), Cells(x, Cells(x, Columns.Count).End(xlToLeft).Column)) 

И позже, если вам нужно Select его использовать:

Rng.Select 
+0

Привет, он непрерывный, поскольку данные вставляют столбец по столбцу до последнего. Затем я пытаюсь выбрать его для копирования и перехода к слову. Сейчас все работает хорошо. Спасибо за вашу помощь! – KoderM16

+0

@ KoderM16 ok, все же вы должны знать об опасности использования 'End (xlToRight)' и 'End (xlDown)' –

+0

Я согласен и благодарю вас за помощь. :) – KoderM16